1、顺序队列的实现
typedef char ElemType;
typedef struct{
ElemType elem[MaxSize];
int front,rear;
}SqQueue;
void InitQueue(SqQueue *&q)
{
q=(SqQueue *)malloc(sizeof(SqQueue));
q->front=q->rear=0;
}
void ClearQueue(SqQueue *&q)
{
free(q);
}
int QueueLength(SqQueue *q){
return (q->rear-q->front+MaxSize)%MaxSize;
}
int QueueEmpty(SqQueue *q){
return q->front==q->rear;
}
int enQueue(SqQueue *&q,ElemType e){
if((q->rear+1)%MaxSize==q->front){
return 0;
}
q->rear=(q->rear+1)%MaxSize;
q->elem[q->rear]=e;
return 1;
}
int deQueue(SqQueue *&q,ElemType &e){
if(q->front==q->rear){
return 0;
}
q->front=(q->front+1)%MaxSize;
e=q->elem[q->front];
return 1;
}
2、链式队列的实现
typedef char ElemType;
typedef struct qnode{
ElemType data;
struct qnode *next;
}QNode;
typedef struct{
QNode *front;
QNode *rear;
}LiQueue;
void InitQueue(LiQueue *&q){
q=(LiQueue *)malloc(sizeof(LiQueue));
q->front=q->rear=NULL;
}
void ClearQueue(LiQueue *&q){
QNode *p=q->front;
if(p!=NULL){
QNode *r=p->next;
while(r!=NULL){
free(p);
p=r;
r=r->next;
}
free(p);
}
free(q);
}
int QueueLength(LiQueue *q){
QNode *p=q->front;
int i=0;
while(p!=NULL){
i++;
p=p->next;
}
return i;
}
int QueueEmpty(LiQueue *q){
return q->rear==NULL;
}
void enQueue(LiQueue *&q,ElemType e){
QNode *qnode;
qnode=(QNode*)malloc(sizeof(QNode));
qnode->data=e;
qnode->next=NULL;
if(q->rear==NULL){
q->front=q->rear=qnode;
}else{
q->rear->next=qnode;
q->rear=qnode;
}
}
int deQueue(LiQueue *&q,ElemType &e){
QNode *t;
if(q->rear==NULL){
return 0;
}
if(q->front==q->rear){
t=q->front;
q->front=q->rear=NULL;
}else{
t=q->front;
q->front=q->front->next;
}
e=t->data;
free(t);
return 1;
}
分享到:
相关推荐
### 数据结构:队列实现详解 #### 一、队列概念与特性 在计算机科学领域,**队列**是一种常见的线性数据结构,遵循先进先出(First In First Out, FIFO)的原则。也就是说,最早添加到队列中的元素将是最先被移除的...
数据结构中的队列是一种线性数据结构,遵循“先进先出”(First In First Out, FIFO)的原则。在这个实验中,我们重点学习了如何用C++实现循环队列的存储和操作。 首先,循环队列的结构定义为`seqqueue`,包含一个...
c语言数据结构的队列实现,新建队列,入队列,出队列,删除队列
以下是一个简单的队列实现示例: ```csharp using System; using System.Collections.Generic; public class Program { public static void Main() { Queue<int> myQueue = new Queue(); // 入队操作 ...
链队列,顾名思义,是基于链表实现的队列数据结构。队列是一种遵循“先进先出”(FIFO,First In First Out)原则的数据结构,类似于现实生活中的排队等待。在链队列中,元素按照加入的顺序排列,第一个加入的元素被...
在计算机程序设计中,队列的实现可以通过不同的数据结构来完成,主要包括数组和链表。数组实现的队列操作简单明了,但存在一个显著的缺点,即队列的大小在初始化时便已固定,难以应对动态变化的需求。数组队列的另一...
本篇将深入探讨队列的概念,数据结构的实现以及在C++中如何自创一个队列。 队列是一种先进先出(FIFO, First-In-First-Out)的数据结构,它的工作原理类似于现实生活中的排队。元素被添加到队列的后端(称为入队或...
数据结构栈和队列解决迷宫问题 本文档详细介绍了利用栈和队列解决迷宫问题的步骤,对于初学者学习数据结构能很好的进行辅导。本文档主要涉及到数据结构的两个重要概念:栈和队列,并介绍了如何使用这两个数据结构来...
在计算机科学中,数据结构是组织、存储和处理数据的方式,而队列是其中一种基本且重要的数据结构。队列是一种线性数据结构,遵循“先进先出”(First In First Out, FIFO)的原则,类似于现实生活中的排队等待服务。...
栈和队列是两种基础且重要的数据结构,广泛应用于各种算法和程序设计中。本课件及课堂笔记将深入探讨这两种数据结构的概念、特性以及它们在实际问题中的应用。 栈(Stack)是一种后进先出(LIFO,Last In First Out...
本主题关注的是如何使用C语言来实现数据结构中的栈和队列,这是两种基础但非常重要的抽象数据类型(ADT)。 栈(Stack)是具有后进先出(LIFO)特性的数据结构。它类似于一个堆叠的盘子,最新的元素被放在顶部,...
3. 高级数据结构实现:如Java的`java.util.Queue`接口,提供了多种队列实现,如`ArrayDeque`(基于数组的双端队列)、`LinkedList`(链表实现)等。 队列的应用场景: 1. 打印机任务调度:新任务入队,完成的任务出...
单链队列是一种常用的数据结构,它在计算机科学中扮演着重要的角色,特别是在处理序列操作时。本节我们将深入探讨单链队列的概念、它的实现原理以及如何在VC6.0环境下进行具体实现。 首先,我们需要理解数据结构中...
C++数据结构与算法之双缓存队列实现方法详解 本文主要介绍了C++数据结构与算法之双缓存队列实现方法,结合实例形式分析了双缓存队列的原理、实现方法与相关注意事项。 知识点一:双缓存队列的定义 双缓存队列是一...
数据结构 -- C语言版 -- 队列的部分实现代码,详细介绍参考数据结构--队列的系列博文。链接为:https://blog.csdn.net/songshuai0223/category_9742561.html。
对于这个数据结构队列的作业,很可能是要求学生自定义一个队列类,以便更好地理解其内部工作原理。 自定义队列通常涉及以下关键组件和操作: 1. **初始化**:创建队列时,需要设置一个初始容量或默认为空。 2. **...
在本项目中,“数据结构链式队列程序”是一个用C++语言实现的队列数据结构实例,它通过链表来存储元素,具有高效插入和删除操作的能力。 链式队列相比于数组实现的队列,其优势在于动态扩展性。数组队列在预先分配...
队列是一种基本的数据结构,它遵循“先进先出”(First In First Out, FIFO)的原则,类似于现实生活中的排队等待服务。本项目重点探讨了如何使用C语言来实现队列的操作。 在C语言中,我们可以使用数组或链表来模拟...
数据结构利用队列实现二叉树的层次遍历实验三 本实验的目的是掌握利用二叉树的递归结构性质建立二叉链表,掌握循环队列的基本算法和二叉树的遍历算法。实验中,我们将设计一个利用队列实现二叉树层次遍历的程序。 ...