数据结构链队列Word下载.docx

上传人:b****3 文档编号:15911526 上传时间:2022-11-17 格式:DOCX 页数:5 大小:16.09KB
下载 相关 举报
数据结构链队列Word下载.docx_第1页
第1页 / 共5页
数据结构链队列Word下载.docx_第2页
第2页 / 共5页
数据结构链队列Word下载.docx_第3页
第3页 / 共5页
数据结构链队列Word下载.docx_第4页
第4页 / 共5页
数据结构链队列Word下载.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数据结构链队列Word下载.docx

《数据结构链队列Word下载.docx》由会员分享,可在线阅读,更多相关《数据结构链队列Word下载.docx(5页珍藏版)》请在冰豆网上搜索。

数据结构链队列Word下载.docx

returnQ->

front==NULL&

&

Q->

rear==Null;

//实际上只须判断队头指针是否为空即可

(3)入队

voidEnQueue(LinkQueue*Q,DataTypex)

{//将元素x插入链队列尾部

QueueNode*p=(QueueNode*)malloc(sizeof(QueueNode));

//申请新结点

p->

data=x;

next=NULL;

if(QueueEmpty(Q))

rear=p;

//将x插入空队列

else{//x插入非空队列的尾

rear->

next=p;

//*p链到原队尾结点后

//队尾指针指向新的尾

(4)出队

DataTypeDeQueue(LinkQueue*Q)

DataTypex;

QueueNode*p;

Error("

Queueunderflow"

);

//下溢

p=Q->

front;

//指向对头结点

x=p->

data;

//保存对头结点的数据

front=p->

next;

//将对头结点从链上摘下

if(Q->

rear==p)//原队中只有一个结点,删去后队列变空,此时队头指针已为空

free(p);

//释放被删队头结点

returnx;

//返回原队头数据

(5)取队头元素

DataTypeQueueFront(LinkQueue*Q)

Queueifempty."

front->

注意:

 ①和链栈类似,无须考虑判队满的运算及上溢。

 ②在出队算法中,一般只需修改队头指针。

但当原队中只有一个结点时,该结点既是队头也是队尾,故删去此结点时亦需修改尾指针,且删去此结点后队列变空。

 ③以上讨论的是无头结点链队列的基本运算。

和单链表类似,为了简化边界条件的处理,在队头结点前也可附加一个头结点,增加头结点的链队列的基本运算【参见练习】

假设数据元素为int型

大概的函数如下所示:

功能函数没怎么写注释,如果你不是很懂的话可以看下书,或者拿只笔出来画画,只是你对这个还没能够明白才不懂的,你把单链表的创建删除过程在纸上一画就会慢慢熟悉明白了的

#include<

iostream>

usingnamespacestd;

structNode

{

intdata;

Node*next;

//链表节点的结构

};

structQueue

Node*front;

Node*rear;

//队列的首尾指针

intSetnull(Queue&

Q)

Q.front=Q.rear=newNode;

//将队列置空也是初始化

if(!

Q.front)

return0;

Q.front->

return1;

}

intempty(QueueQ)

if(Q.front==Q.rear)

else

intgetfirst(Queue&

if(empty(Q))

cout<

<

"

thequeueisempty!

endl;

returnQ.front->

next->

intenqueue(Queue&

Node*p;

intelem;

输入一个要进队列的数"

cin>

>

elem;

p=newNode;

p)

p->

data=elem;

Q.rear->

Q.rear=p;

intdel(Queue&

Thequeueisempty!

p=Q.front->

next=p->

if(Q.rear==p)

Q.rear=Q.front;

deletep;

voidtraverse(QueueQ)

Q.front=Q.front->

while(Q.front)

data<

'

'

;

voidshowTable(QueueQ)

system("

cls"

//清屏的作用

======================================"

1----入队"

2----出队"

3----将队列置空"

4----队列第一个元素"

5----退出"

目前队列内没有元素,为空,选择1向队列内输入元素"

当前队列内的元素是:

traverse(Q);

请给出你的选择:

voidmain()

QueueQ;

Setnull(Q);

boolflag=true;

charch;

while(flag)

showTable(Q);

ch;

if(ch=='

1'

enqueue(Q);

elseif(ch=='

2'

del(Q);

elseif(ch=='

3'

队列被置空"

4'

队列的第一个元素是"

getfirst(Q)<

5'

flag=false;

用户选择退出……"

输入错误,请重新输入"

pause"

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 中考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1