队列的链式表示和实现
来源:互联网 发布:知乎hexo简书 编辑:程序博客网 时间:2024/05/23 01:26
用链表表示的队列简称为链队列。一个链队列显然需要两个分别指示队头和队尾的指针(分别称为头指针和尾指针)才能唯一确定。
和线性表的单链表一样,为了操作方便起见,我们也给链队列添加一个头结点,并令头指针指向头结点。由此,空的链队列的判断条件为头指针和尾指针均指向头结点,如图所示
//- - - - - - - - - -单链队列——队列的链式存储结构- - - - - - - - -
typedef struct QNode{ int date; struct QNode *next;}QNode,*QueuePtr;typedef struct{ QueuePtr Front; //队头指针 QueuePtr rear; //队尾指针}LinkQueue;//InitQueue
//构造一个空队列Qint InitQueue(LinkQueue &Q){ Q.Front=Q.rear=(QueuePtr)malloc(sizeof(QNode)); if(!Q.Front) exit(OVERFLOW); Q.Front->next=NULL; return OK;}//DestoryQueue
//销毁队列Qint DestoryQueue(LinkQueue &Q){ while(Q.Front){ Q.rear=Q.Front->next; free(Q.Front); Q.Front=Q.rear; } return OK;}//EnQueue
//插入元素e为Q的新的队尾元素int EnQueue(LinkQueue &Q,int e){ QNode *p; p=(QueuePtr)malloc(sizeof(QNode)); if(!p) exit(OVERFLOW); p->date=e; p->next=NULL; Q.rear->next=p; Q.rear=p; return OK;}
//Dequeue
//删除Q的队头元素,用e返回其值int DeQueue(LinkQueue &Q,int &e){ if(Q.Front==Q.rear) return ERROR; QNode *p; p=Q.Front->next; e=p->date; Q.Front->next=p->next; if(Q.rear==p) Q.rear=Q.Front; free(p); return OK;}//QueueLength
//返回队列的长度int QueueLength(LinkQueue Q){ QNode *p; p=Q.Front; int i=0; while(p!=Q.rear){ p=p->next; i++; } return i;}//QueueTraverse
//遍历队列Qint QueueTraverse(LinkQueue Q){ int l=QueueLength(Q); for(int i=0;i<l;i++){ Q.Front=Q.Front->next; printf("%d ",Q.Front->date); } printf("\n");}//main
<pre name="code" class="cpp">int main(){ LinkQueue Q; InitQueue(Q); int e; printf("Please input elem:\n"); while(~scanf("%d",&e)){ EnQueue(Q,e); } printf("Output:\n"); QueueTraverse(Q);}
//结果预览
0 0
- 队列的链式表示和实现
- 链式队列的表示和实现
- 链式队列的表示和实现
- 单队列的链式表示和实现
- 队列的链式表示和实现
- 队列的链式表示和实现
- 队列的链式表示和实现(数据结构)
- 队列的链式表示和实现
- 队列的链式表示和实现
- 链队列——队列的链式表示和实现
- 链队列-队列的链式表示和实现
- 链队列--队列的链式表示和实现
- 队列的链式表示和实现----单链队列
- 队列的链式表示和实现----循环队列
- 链队列---队列的链式表示和实现
- 数据结构之队列的链式表示和实现
- 队列的链式表示与实现
- 队列的链式表示与实现
- 关于MVVM模式的简单入门
- 图片随手机姿态变化上下左右移动
- 岛屿的个数(LintCode)
- 51单片机内部E2ROM
- bzoj1631: [Usaco2007 Feb]Cow Party
- 队列的链式表示和实现
- 配置Vsftpd服务器
- Spring @Transactional
- Mvaen OutOfMemoryError
- KMP算法Java实现
- 第三次试验——栈和队列(一)
- 面试题集锦
- STC15F2K60S2芯片A/D转换器的应用
- delete obsolete 会删除归档日志么?