数据结构教学作者主编马世霞第3栈和队列课件幻灯片.ppt

数据结构教学作者主编马世霞第3栈和队列课件幻灯片.ppt

  1. 1、本文档共44页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
(1) 置空队 初始条件:队列不存在。 操作结果:构造一个空队列。 void Init_Queue(SeQueue *q) { q-front=q-rear=0; } (2)入队 初始条件:队q存在。 操作结果:对已存在的队列q,插入一个元素x到队尾。 void In_Queue(SeQueue *q, Datatype e) { if((q-rear+1)%MaxSize==q-front) printf(队满); else { q-data[q-rear]=e; q-rear=(q-rear+1)%MaxSize; } } (3)出队 初始条件:队列q存在。 操作结果:删除队首元素,并返回其值。 int Out_Queue(SeQueue *q, Datatype *e) { if(q-front==q-rear) { printf(队空); return 0; /*队空不能出队*/ } else { *e=q-data [q-front]; /*读出队头元素*/ q-front=(q-front+1)%MaxSize; return 1; /*出队完成*/ } } 2. 链队 采用链式存储结构的队称为链队。和链栈类似,用单链表来实现链队,根据队列的FIFO原则,为了操作上的方便,我们分别需要一个头指针和尾指针,如图3-8所示。 图3-8 链队示意图 图3-8中头指针front和尾指针rear是两个独立的指针变量,从结构性上考虑,通常将二者封装在一个结构中。 链队的描述如下: typedef struct node { Datatype data; struct node *next; } QNode; /*链队结点的类型*/ typedef struct { QNnode *front,*rear; }LQueue; /*将头尾指针封装在一起的链队*/ 定义一个指向链队的指针:LQueue *q; 按这种思想建立的带头结点的链队如图3-9所示。 图3-9 头尾指针封装在一起的链队 (1)创建一个带头结点的空队: 初始条件:队列不存在。 操作结果:构造一个空队列。 void Init_LQueue(LQueue *q) /*链队列初始化*/ { q-front = (QNode*)malloc(sizeof(QNode)); q-front-next = NULL; q-rear = q-front; } (2)入队 初始条件:队q存在。 操作结果:对已存在的队列q,插入一个元素x到队尾。 int In_LQueue(LQueue *q, Datatype x)/*元素x 入队列*/ { QNode *s; s=(QNode*)malloc(sizeof(QNode)); if(s!=NULL) { s-data = x; s-next = NULL; q-rear-next=s; q-rear=s; return 1; } else return 0; } (3)判队空 初始条件:队列q存在。 操作结果:若q为空队则返回为1,否则返回为0。 int Empty_LQueue( LQueue *q) { if (q-front==q-rear) return 1; else return 0; } (4)出队 初始条件:队列q存在。 操作结果:删除队首元素,并返回其值。 int Del_LQueue(LQueue *q, Datatype *e) /*删除队头元素并返回*/ { QNode *p; if(Empty_LQueue(q)) { printf(队列空\n); return 0;} else {p =q-front-next; q-front-next = p-next; if(p-next == NULL) q-rear = q-front; *e = p-data; free(p); return 1;} } 【例3-3】利用队的顺序存储结构,实现队列插入,删除的功能。 #includestdio.h #include stdlib.h #includeconio.h #define MaxSize 10 /*队列的最大容量*/ typedef struct { int a[MaxSize]; /*队员的存储空间*/ int

您可能关注的文档

文档评论(0)

开心农场 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档