C语言中,队列是什么意思,有什么用途

Python017

C语言中,队列是什么意思,有什么用途,第1张

队列是一种特殊的线性表。

队列一种可以实现“先进先出”的存储结构,即“一端入,一端出”,队首(front)出队,队尾(rear)入队,若front指向队首,则rear指向队尾最后一个有效元素的下一个元素;若rear指向队尾,则front指向队首第一个有效元素的下一个元素。

队列特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。

扩展资料

循环队列各个参数的含义

1、队列初始化front和rear的值都是零,初始化时队列就是空的。

2、队列非空front代表队列的第一个元素rear代表了最后一个有效元素的下一个元素。

3、队列空front和rear的值相等,但是不一定是零。

参考资料来源:百度百科—队列

//定义队列结构体

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)

}