1、 链队列的定义
队列的链式存储结构简称为链队列。它是限制仅在表头删除和表尾插入的单链表。
typedef struct queuenode{
DataType data
struct queuenode *next
}QueueNode ;
typedef struct{
QueueNode *front,*rear; //对头和队尾
}LinkQueue;
3、 链队列的基本运算
(1) 置空队
void InitQueue(LinkQueue *Q)
{
Q->front=Q->rear=NULL;
}
(2) 判队空
intQueueEmpty(LinkQueue
*Q)
{
return
Q->front==NULL&&Q->rear==Null;
//实际上只须判断队头指针是否为空即可
}
(3) 入队
void
EnQueue(LinkQueue *Q,DataType x)
{//将元素x插入链队列尾部
QueueNode *p=(QueueNode *)malloc(sizeof(QueueNode));//申请新结点
p->data=x;
p->next=NULL;//将x放入节点中
if(QueueEmpty(Q))
Q->front=Q->rear=p; //将x插入空队列
else {
//x插入非空队列的尾
Q->rear->next=p; //*p链到原队尾结点后
Q->rear=p;
//队尾指针指向新的尾
}
}
(4) 出队
DataType DeQueue (LinkQueue *Q)
{
DataType x;
QueueNode *p;
if(QueueEmpty(Q))
Error("Queue underflow");//下溢
p=Q->front;
//指向对头结点
x=p->data;
//保存对头结点的数据
Q->front=p->next;
//将对头结点从链上摘下
if(Q->rear==p)//原队中只有一个结点,删去后队列变空,此时队头指针已为空
Q->rear=NULL;
free(p);
//释放被删队头结点
return
x; //返回原队头数据
}
(5) 取队头元素
DataType QueueFront(LinkQueue *Q)
{
if(QueueEmpty(Q))
Error("Queue if empty.");
return Q->front->data;
}
注意:
①和链栈类似,无须考虑判队满的运算及上溢。
②在出队算法中,一般只需修改队头指针。但当原队中只有一个结点时,该结点既是队头也是队尾,故删去此结点时亦需修改尾指针,且删去此结点后队列变空。
分享到:
相关推荐
编写一个程序,实现链队列的各种基本运算,并在基础上完成以下功能: 1) 初始化链队列; 2) 判断链队列是否为空; 3) 依次进队元素a,b,c; 4) 出队一个元素,并输出该元素; 5) 输出链队列的长度; 6) 依次进队元素d,...
链队列
//用链栈实现链队列逆置 //Wpl #include "linkstack.h" //将链栈基本操作包括进来 typedef struct node /*定义链队列结点类型*/ { datatype data; struct node *next; }linkqueue; typedef struct /*封装队头指针...
单链队列,详细内容见博文:http://blog.csdn.net/u013071074/article/details/27641665
链队列(欠判队空操作) 主函数部分纯属测试 部分内容: Status InitQueue (LinkQueue &Q); // 构造一个空队列Q Status EnQueue (LinkQueue &Q,QElemType e) ;// 插入元素e为Q的新的队尾元素 Status DeQueue ...
注:分为四个内容:顺序栈、链栈、循环队列、链队列。代码由C++程序设计语言编写,包含栈和队列的基本操作(栈:出、入、取、判空等|队列:出、入、取、打印队列、判空等),并展示了三个具体的使用例子,包括用栈求...
链队列的基本操作 (1)建立链表队列 (2)入队一个元素 (3)出队一个元素 c语言实现的哦!!! 配c语言版的数据结构!!
链队列的基本操作和实现链队列的基本操作和实现
链队列,数据结构链队列,数据结构链队列,数据结构链队列,数据结构链队列,数据结构链队列,数据结构链队列,数据结构链队列,数据结构链队列,数据结构链队列,数据结构
是关于数据结构的顺序队列和链队列的操作,比如删除,插入等等
c++,链队列的基本操作(创建,销毁,查找,删除,插入等)
链队列代码和讲解,内容详细全面,通俗易懂,通过测试,代码可以直接使用,方便大家学习.
显示链队列中的元素,课程中的练习 希望对大家有用
主要实现了数据结构链队列的基本操作,CPP完美运行无错误。
链栈和链队列的实现,用二级指针实现出栈、入栈,展示了二级指针的用法
用c语言写的链队列的程序,包含入队、出队、输出函数和主函数。
数据结构 严蔚敏 C语言版 链队列表示与实现 很给劲哦 绝对不会令您失望的。
根据栈和队列的抽象数据类型的定义,按要求实现一个栈或一个队列。 要求: 1、 实现一个共享栈 2、 实现一个链栈 3、 实现一个循环队列 4、 实现一个链队列
该程序包括链队列的创建,销毁,清空,添加,删除等。可以根据自己的需要完成相关的功能。
该代码定义了链队列的基本功能,对于初学者应该有帮助