`
qq466862016
  • 浏览: 128467 次
  • 来自: 杭州
社区版块
存档分类
最新评论

数据结构与算法-队列

阅读更多

数据结构与算法-队列

一、概述

           队列也是一种表,是一种先进先出、从队头删除、从队尾删除的一种数据结构。队列这种数据结构在实际的项目中用的也是比较多,比如消息中间件 消息队列等。队列的插入我们称为入队操作。从队列中移除我们称为出队操作。队列和栈一样每个操作都是O(1)

 

 

 

            队列的基本操作有:

           1、初始化队列

           2、入队

           3、出队

           4、判空

           5、获取队头元素

          6、获取队尾元素

          7、获取队列的大小

 

 

下面是golang 实现

package queue

import (
	"fmt"
)

// define a node
type Node interface{}

// 队列
type Queue struct {
	Data Node
	Next *Queue
}

func InitQueue() *Queue {

	q := &Queue{}
	q.Next = nil
	return q
}

// 判空
func IsEmpty(q *Queue) bool {

	return q.Next == nil

}

// 入队
func EnQueue(q *Queue, data Node) {

	p := &Queue{}
	p.Data = data
	p.Next = nil

	if q.Next == nil {
		q.Next = p
	} else {
		s := q

		for s.Next != nil {

			s = s.Next
		}
		s.Next = p
	}

}

// 出队
func DeQueue(q *Queue) Node {

	if IsEmpty(q) {
		return nil
	} else {
		s := q.Next

		if s.Next == nil {
			q.Next = nil
		} else {
			q.Next = s.Next

		}
		return s.Data
	}
}

// 大小
func Size(q *Queue) int {

	if IsEmpty(q) {
		return 0
	}

	s := q
	var size int
	for s.Next != nil {
		size++
		s = s.Next
	}

	return size
}

//打印
func Print(q *Queue) {

	if IsEmpty(q) {
		return
	}

	s := q
	for s.Next != nil {

		fmt.Println(s.Data)
		s = s.Next
	}
}

// 头部
func Header(q *Queue) Node {

	if IsEmpty(q) {
		return nil
	}

	return q.Next.Data
}

// 尾部
func Tail(q *Queue) Node {

	if IsEmpty(q) {
		return nil
	}

	s := q
	for s.Next != nil {

		s = s.Next
	}

	return s.Next.Data
}

 

  • 大小: 230.2 KB
分享到:
评论

相关推荐

    数据结构与算法-队列的创建与操作

    非常稳,利用类创建,所有操作都有!

    数据结构和算法-思维导图.pdf

    以上是根据文件的标题、描述、标签和部分预览内容总结出的数据结构与算法知识点。这些知识点是IT行业中软件开发人员必备的基础知识,广泛应用于软件设计、算法实现、系统优化等众多领域。掌握这些知识点能够帮助IT...

    数据结构与算法-PPT课件

    数据结构与算法是计算机科学中的核心课程,它探讨如何有效地组织和处理数据,以及如何设计和分析解决问题的算法。这份“数据结构与算法-PPT课件”提供了丰富的学习材料,涵盖了多个关键主题。 首先,我们要了解数据...

    数据结构与算法-java

    数据结构与算法是计算机科学的基础,对于理解和设计高效的软件至关重要。在Java编程中,理解这些概念可以帮助开发者编写出性能优异的程序。以下是基于标题“数据结构与算法-java”及描述中提到的“数据结构与算法...

    数据结构-基本算法-循环队列

    数据结构-基本算法-循环队列(学生时代源码,调试可运行)

    算法-数据结构和算法-5-队列和双端队列.rar

    在计算机科学领域,数据结构和算法是至关重要的...通过阅读“数据结构和算法-5-队列和双端队列.pdf”这份文档,你可以深入学习它们的实现细节、操作方法以及在实际问题中的应用,从而在编程实践中更好地运用这些工具。

    数据结构与算法--Java语言描述

    数据结构与算法是计算机科学的基础,对于任何编程语言来说,理解和掌握它们都是至关重要的,特别是对于Java语言。在这个“数据结构与算法--Java语言描述”的资料中,我们有望深入理解这些核心概念,并通过Java语言来...

    西安电子科技大学-数据结构与算法-期末知识点总结.pdf

    "西安电子科技大学-数据结构与算法-期末知识点...本资源涵盖了数据结构与算法的基本概念、线性表、栈与队列、树与二叉树、图、查找算法和排序算法等方面的知识点,对于学习数据结构与算法的学生具有重要的参考价值。

    hello-algo-数据结构与算法-zh-csharp.pdf

    本书的内容涵盖了数据结构与算法的基础知识,包括数组、链表、栈、队列、树、图等数据结构,以及排序、查找、图形遍历等算法。书中还提供了大量的编程实践和习题,帮助读者更好地掌握数据结构与算法的知识。 本书的...

    数据结构与算法-面向对象的C++设计模式

    知识点涵盖了从基础的数据结构(如数组、链表、栈、队列)到更高级的概念(如设计模式、算法的渐近分析),还包括了如何将这些理论应用到实际编程实践中。通过本文件提供的内容,读者可以深入了解数据结构与算法的...

    数据结构与算法--面向对象的C++设计

    本书标题为《数据结构与算法——面向对象的C++设计》,其内容主要围绕数据结构和算法在C++中的面向对象设计模式展开。本书不仅介绍了数据结构与算法的基本概念,还着重强调了面向对象编程范式(Object-Oriented ...

    算法-数据结构和算法-4-栈和队列.rar

    本资源“算法-数据结构和算法-4-栈和队列.rar”聚焦于两种基本但极其实用的数据结构——栈和队列,这两种结构在编程中有着广泛的应用。 栈(Stack)是一种线性数据结构,遵循“后进先出”(Last In First Out,简称...

    数据结构实验报告2-栈与队列-队列基本操作算法-实验内容及要求.docx

    本次实验是关于数据结构中的队列基本操作算法。队列是一种先进先出(FIFO)的数据结构,在计算机科学中有着广泛的应用,例如进程调度、任务队列等场景。通过本实验,学生能够深入理解循环队列的概念,并熟练掌握其...

    数据结构与算法---C++版(Adam Drozdek)书中的源代码

    《数据结构与算法---C++版》是由Adam Drozdek编著的一本经典教材,它深入浅出地讲解了数据结构和算法的核心概念,并通过C++语言进行了实现。这本书不仅适合初学者,也对有一定经验的程序员有很高的参考价值。在...

    数据结构与算法分析--C语言描述_数据结构与算法_

    数据结构与算法是计算机科学的基础,对于理解和设计高效的软件至关重要。C语言因其高效、底层特性,常被用于实现数据结构和算法,使得程序更接近硬件,性能更优。本资源"数据结构与算法分析--C语言描述"是针对数据...

    数据结构与算法-C语言版本

    数据结构与算法是计算机科学的基础,对于理解和设计高效的软件至关重要。C语言因其高效、底层特性,常被用于实现数据结构和算法。本资料包“数据结构与算法-C语言版本”聚焦于通过源码实例和答案解析,帮助学习者...

    数据结构与算法-----PPT版本

    数据结构与算法是计算机科学的基础,对于任何编程学习者来说,理解和掌握它们至关重要。这个“数据结构与算法-----PPT版本”很可能包含了徐旭松教授或专家精心制作的一系列教学材料,旨在帮助学习者深入理解这些核心...

    数据结构和算法-Flash动画演示

    4. **栈与队列**:栈是一种后进先出(LIFO)的数据结构,常用于函数调用、表达式求值等。队列则是先进先出(FIFO)的,常见应用包括任务调度和打印机队列。这两种数据结构是许多算法和数据处理的基础。 5. **树**:...

    数据结构与算法----面向对象的C++模式

    全书分16章,1概论,2算法分析 3渐进表示法 4基本数据结构,5数据类型与抽象 6栈与队列 7有序线性表与排序表 8 散列,哈希表与分散表 9树 10查找树, 11堆和优先队列 12集合,多重集和分区 13动态存储分配 14 算法...

Global site tag (gtag.js) - Google Analytics