堆栈和队列的基本操作.docVIP

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
堆栈和队列的基本操作.doc

实践教学 ******************* 软件学院 2012学年秋季学期 上机实验 报告册 课程名称:_________________________ 实验名称:_________________________ 指导教师:_________________________ 小组成员: *********** ********** *********** ********** *********** 堆栈和队列的基本操作 一 实验目的 1.熟悉栈这种特殊现行结构特性; 2.熟悉并掌握栈在顺序存储结构和链表存储结构下的基本运算; 3.熟悉队列这种特殊线性结构的特性; 4.熟悉掌握队列在链表存储结构下的基本运算; 二 实验原理 堆栈顺序存储结构下的基本算法 堆栈链式存储结构下的基本算法 队列顺序存储结构下的基本算法 队列顺序存储结构下的基本算法 1、堆栈的定义:堆栈是一种只允许在表的一端进行插入和删除运算的特殊的线性表。允许进行插入和删除运算的一端称为栈顶,另一端称为栈底,当链表中没有元素时,称为空栈。 2、堆栈的插入运算称为入栈或者进栈,删除运算称为出栈或者退栈,栈顶的当前位置是动态的,标识栈顶当前位置的指针称为栈顶指针。每次进栈的数据元素都放在原当前栈顶元素之前成为新的栈顶元素,每次退栈的数据元素都是原当前栈顶元素,最后进入堆栈的数据元素总是最先退出堆栈。 3、堆栈的存储结构: 顺序存储结构:栈的顺序存储结构称为顺序栈。顺序栈的本质是顺序表的简化。 链式存储结构:栈的链式存储结构称为链栈,通常用单链表示。链栈的插入和删除操作只需处理栈顶的情况。 4、队列的定义:队列是允许在表的一端进行插入,而在表的另一端进行删除的特殊线性表。允许进行插入的一端称为队尾,允许进行删除的一端称为队头。队列的插入运算称为进队或者入队,删除运算称为出队或者离队,因此队列又称为先进先出表。 5、队列的存储结构 队列的存储结构同线性表一样,可以分为顺序结构和链式结构。 顺序存储结构:用顺序存储结构存储队列称为顺序队列。顺序队列会出现假溢出问题,解决办法是用首尾相接的书顺序存储结构,称为循环队列。在队列中,只要涉及队头或者队尾指针的修改都要对其求模。 链式存储结构:用链式存储结构存储的队列称为链队列。链队列的基本操作的实现基本上也是单链表操作的简化。通常附设头结点,并设置队头指针指向头结点,队尾指针指向终端结点。插入数据时只考虑在链队列的尾部进行,删除数据时只考虑在链队列的头部进行。 三 实验内容 进行堆栈(包括顺序结构、链式结构)和队列的基本操作:初始化栈、判 断栈空、出栈、取出栈顶元素、入栈、显示栈中所有元素等运算。 四 程序代码: 链式队列: #includestdio.h #includestdlib.h #define NULL 0 typedef int QElemType; typedef struct QNode{ QElemType data; struct QNode *next; } QNode,*QueuePtr; typedef struct{ QueuePtr front; QueuePtr rear; }LinkQueue; void CreateQueue(LinkQueue *Q) { int a; QueuePtr p; p=(QueuePtr)malloc(sizeof(QNode)); if(!p) printf(创建失败) ; else {p-next=NULL; Q-front=p; Q-rear=p; scanf(%d,a); while(a!=-1) { p=(QueuePtr)malloc(sizeof(QNode)); p-next=NULL; if(!p) printf(创建失败) ; else { p-data=a; Q-rear-next=p; Q-rear=p; scanf(%d,a); } } } } void PrintfQueue(LinkQueue *Q) { QueuePtr p; for(p=Q-front-next;p!=NULL;p=p-next) { printf( %d,p-data); } } void EnQueue(LinkQueue *Q,QElemType x) {

文档评论(0)

yaobanwd + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档