c语言 队列的操作

1、 掌握循环队列和链队列的特点及常见算法。
2、 参照给定的循环队列和链队列的程序样例,验证给出的队列的常见算法。
3、 能对队列进行简单的应用。
4、 提交实验报告,报告内容包括:目的、要求、算法 述、程序结构、主要变 说明、程序清单、调试情况、设计技巧、心得体会等。
三、 实验内容:
1、 循环队列的基本操作。要求: 设计一个主函数对循环队列进行测试。主要功能有:入队操作、出队操作、取对头元素。
2、 链队列的基本操作。要求:
设计一个主函数对链队列进行测试。主要功能有:链队列的初始化、求队列的长度、入队列操作、出队列操作、取对头元素。

//定义队列结构体
typedef struct Qnode
{
int data;
struct Qnode *next;
} Queue , *QueuePtr;

typedef struct
{
QueuePtr front;
QueuePtr rear;
} linkQnode;
//创建一个队列
initQueue (linkQnode *q)
{
q -> front = q -> rear = (QueuePtr) malloc (sizeof (Queue));
if (!q -> front) exit (0);
q -> front -> next = NULL;
}
//入队列
EnterQueue (linkQnode *q , int item)
{
QueuePtr p;
p = (QueuePtr) malloc (sizeof (Queue));
if (!p) exit (0);
p -> data = item;
p -> next = NULL;
q -> rear -> next = p;
q -> rear = p;
}
//出队列
DelQueue (linkQnode *q , int *item)
{
QueuePtr p;
if (q -> front = q -> rear) return;
p = q -> front -> next;
*item = p -> data;
q -> front -> next = p -> next;
if (q -> rear == p)
q -> rear = q -> front;
free (p);
}
温馨提示:内容为网友见解,仅供参考
无其他回答

C语言消息队列
发送端首先申请Key,使用msgget函数创建或打开消息队列。然后使用msgsnd函数向消息队列发送消息。该函数接受消息队列ID、消息缓冲区地址、消息正文长度以及标志位参数。当使用MSG_NOWAIT标志位时,msgsnd函数在消息队列满时将不等待,而是立即返回。接收端从消息队列中接收消息使用msgrcv函数。该函数也需要消息队列...

用C语言编写队列的各种基本操作,我不是非常明白:注释里有些问题:请大家...
ont)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。 在队列这种数据结构中,最先插入在元素将是最先被删除;反之最后插入的元素将最后被删除,因此队列又称为“先进先出”(FIFO—first in first out)...

C语言中,队列是什么意思,有什么用途
队列一种可以实现“先进先出”的存储结构,即“一端入,一端出”,队首(front)出队,队尾(rear)入队,若front指向队首,则rear指向队尾最后一个有效元素的下一个元素;若rear指向队尾,则front指向队首第一个有效元素的下一个元素。队列特殊之处在于它只允许在表的前端(front)进行删除操作,而在...

c语言队列操作
pq->rear->next = pnew这个代码从队列的尾部增加新节点,然后pq->rear = pnew更新队列尾部指针。队列的数据结构形式就是由一个头front指针,一个尾rear指针来表征,items的设计是用空间换时间,涉及队列大小的操作会非常方便。队列的特征是先进先出,你给出的链式实现,其实就跟一个链表一样,链表的...

数据结构C语言描述的链队列的基本操作(初始化,判空,入队,出队,取对头...
} \/\/出队 int deQueue( LiQueue *&q,ElemType &e){QNode *t;if(q->rear==NULL)return 0;t=q->front;if(q->front==q->rear)q->front=q->rear=NULL;else q->front=q->front->next;e=t->data;break;free(t);return 1;} \/\/取队头 输出队列所有数就是出队 ...

C语言,环形队列
环形队列以数组形式构建,包含读位置、写位置与长度三个关键参数。数组长度为5,读写位置指示数据在数组中的位置。若读写位置相同,环形队列为空。当写入数据达到数组长度时,队列被认为已满。向队列写入数据时,更新写位置。读取数据后,更新读位置。若写位置超过数组长度,通过取模运算找到新写入数据的...

计算机c语言中什么是栈和队列
删除这一端为栈顶,另一端称为栈底。表中无元素时为空栈。栈的修改是按后进先出的原则进行的,栈又称为LIFO表。队列是一种运算受限的线性表,插入在表的一端进行,而删除在表的另一端进行,允许删除的一端称为队头,允许插入的 一端称为队尾,队列的操作原则是先进先出的,又称作FIFO表。

C语言的队列如何实现和表示
我能想到的有两种方法(假设队列元素都是int)一,用链表的方法 struct A { int n;struct A *a;} *p,*head,*rear;head=rear=NULL;\/*头指针,尾指针*\/ 添加元素:p=(struct A*)malloc(sizeof(struct A));...给新元素赋值...;rear->a=p;rear=p;当然添加第一个元素的时候要给head赋值...

C语言中使用队列
如果你用vc,#include<deque>就好了,但是注意要加上using naemspace std;我是当你用的c++的STL,STL中没有真正的队列和栈,他们都是通过对双端队列的改造得到的,所以包含的文件可能和你想的不一样。而且这些头文件都没有.h结尾!很特别 如果你不是vc,当我没说 ...

二级c语言,队列、循环队列是什么?
1、队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。2、循环队列是将向量空间想象为一个首尾相接的圆环,并称这种向量为循环向量。存储在其中的队列称为循环队列。 在顺序队列中,当队尾...

相似回答