- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构课程设计 ——链式存储队列 对于链式存储队列的认识 结构体定义 程序编译及分析 心得体会 队列是一种特殊的线性表,包含一个表头和表尾,进行插入操作的端称为队尾(rear),进行删除操作的端称为队头(front)。队列特点:先进先出。队列中没有元素时,称为空队列。链式存储是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以使不连续的。一个链式队列通常用链表实现。其中,链表包括2个域:数据域和指针域。数据域用来存放队列中的元素,指针域用来存放队列中下一个元素的地址。 data 指针域 Front Rear 结构体定义 struct NODE_TYPE { int Data; struct NODE_TYPE *pNext; }; 2. struct LINK_QUEUE { struct NODE_TYPE *front; struct NODE_TYPE *rear; int Length; }; 结点类型结构体定义:结构体类型名NODE_TYPE 定义队列头指针和尾指针 链式队列Link_Queue 程序编译及分析 ①创建一个空的链式队列; ②判断新建的链式队列是否为空; ③提示用户输入“链式队列的长度”; ④根据用户输入的“链式队列的长度”,逐一提示用户输入“链式队列中的各个元素”,完成链式队列的构造; ⑤判断此时的链式队列是否为空; ⑥调用子程序打印当前链式队列的队首元素和队尾元素; ⑦编写打印链式队列元素的子程序PrintNode( ); ⑧清空队列,连续3次做下列操作:入队4个元素,出队2个元素,打印链式队列,打印当前链式队列的队首元素和队尾元素; ※要求:提供尽可能友好的人机对话界面,便于用户(非程序设计者)使用。 子程序 主程序 1.初始化(创建空队列): void InitQueue(struct LINK_QUEUE*Link_Queue) { Link_Queue-Front=NULL; Link_Queue-Rear=NULL; Link_Queue-Length=0; } 初始化队列,结构体类型名为LINK_QUEUE,队列头为空,队列尾为空,长度为0。创建一空队列。 2.队列判空: int IsEmpty(struct LINK_QUEUE*Link_Queue) { return (Link_Queue-Length==0); } 返回的队列长度为0,即队列为空。 3.清空队列: void InitQueue(struct LINK_QUEUE*Link_Queue) { Link_Queue-Front=NULL; Link_Queue-Rear=NULL; Link_Queue-Length=0; } 关于清空队列,可以看做是初始化队列的重复动作。 4.入队(在队尾增加一个新元素): void Add(struct LINK_QUEUE*Link_Queue,int x) { struct NODE_TYPE *pNewQueue; pNewQueue=(struct NODE_TYPE *)malloc(sizeof(struct NODE_TYPE)); pNewQueue-Data=x; if(IsEmpty(Link_Queue)) { Link_Queue-Front=pNewQueue; Link_Queue-Rear=pNewQueue; } 强制转换 分配内存 else { Link_Queue-Rear-pNext=pNewQueue; Link_Queue-Rear=pNewQueue; } Link_Queue-Length++; } 队尾指向下一个结点 插入成功,队列长度加一 5.出队(在队首删除一个元素): int Del(struct LINK_QUEUE*Link_Queue) { int y; struct NODE_TYPE *pNode; if(IsEmpty(Link_Queue)) { printf(Link_Queue Empty!\n); return 0; } 开辟一个新的结点 y=Link_Queue-Front-Data; pNode=Link_Queue-Front; Link_Queue-Front=pNode-pNext; free(pNode); Link_Queue-Length-
您可能关注的文档
最近下载
- DGTJ08-2001-2016 基坑工程施工监测规程.docx VIP
- 污泥( 废水)运输服务方案(技术方案).doc
- 中国特色国有企业公司治理结构的形成和发展 2025.docx
- 初中英语语法大全.pdf VIP
- 八升九分班考数学试卷.docx VIP
- DB3711_T 165-2025 中小企业劳动用工风险防控服务规范.pdf VIP
- DB3711_T 167-2025 夏玉米病虫害绿色防控技术规程.pdf VIP
- 北师大版八升九数学试卷.docx VIP
- 原子结构 高一化学人教版(2019)必修第一册.pptx VIP
- 沃尔沃-V90 Cross Country-产品使用说明书-2020款 T5 AWD 智尊版-V90CC T5 PZ10GC1-3110819w46V90CC_OMA~Z.pdf
文档评论(0)