- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
datastructureinc堆叠与伫列
Data Structure in C ─ 堆疊與佇列 大綱 堆疊 基本概念 堆疊的加入與刪除 佇列 基本概念 佇列的加入與刪除 環狀佇列 其他型式的佇列 多個堆疊和多個佇列 堆疊與佇列的應用 堆疊 堆疊(stack) 為一有序串列(order list),其加入(insert)和刪除(delete)動作都在同一端,此端通常稱之為頂端(top) 給予一個堆疊S=(a0, a1, …, an-1),a0為底端元素、 an-1為頂端元素,且元素ai在元素ai-1之上,0in 加入一個元素於堆疊,此動作稱為推入(push);從堆疊中刪除一個元素,此動作稱為彈出(pop) 堆疊 (續) 由於堆疊具有先進去的元素最後才會投出來的特性,所以堆疊又稱為後進先出(Last In First Out, LIFO)串列 堆疊 (續) 堆疊的加入(push) void push_f(void) { if(top = MAX-1) /* 當堆疊已滿,則顯示錯誤 */ printf(\n\nStack is full !\n); else { top++; printf(\n\n Please enter item to insert: ); gets(item[top]); } } 堆疊 (續) 堆疊的刪除(pop) void pop_f(void) { if(top 0) /* 當堆疊沒有資料存在,則顯示錯誤 */ printf(\n\n No item, stack is empty !\n); else { printf(\n\n Item %s deleted\n, item[top]); top--; } } 佇列 佇列(Queue) 為一有序串列(order list),其中所有的插入發生在串列的一端,所有的刪除發生在串列的另一端 給予一個佇列Q=(a0, a1, …, an-1),a0為前端元素、 an-1為後端元素,且元素ai在元素ai-1之上,0in 由於佇列具有先進去的元素亦會最先投出來的特性,所以佇列又稱為先進先出(First In First Out, FIFO)串列 佇列 (續) 佇列 (續) 佇列的加入 void enqueue_f(void) { if(rear = MAX-1) /* 當佇列已滿,則顯示錯誤 */ printf(\n\nQueue is full !\n); else { rear++; printf(\n\n Please enter item to insert: ); gets(item[rear]); } } 佇列 (續) 佇列的刪除 void dequeue_f(void) { if(front rear) /* 當資料沒有資料存在,則顯示錯誤 */ printf(\n\n No item, queue is empty !\n); else { printf(\n\n Item %s deleted\n, item[front]); front++; } } 佇列 (續) 佇列的表示方式是Q(1 : n)時,常常會發生佇列前端還有空位,但要加入元素時卻發現此佇列已滿的情形 為解決此問題,佇列常常以環狀佇列(circle queue)的方式來表示CQ(0 : n-1) 佇列 (續) 環狀佇列的加入 void enqueue_f(void) { rear = (rear + 1) % MAX; if(front == rear) { if(rear == 0) rear = MAX-1; /*退回原位*/ else rear == rear-1; /*退回原位*/ printf(\n\nQueue is full !\n);} else {printf(\n\n Please enter item to insert: ); scanf(%d“,cq[rear]);} } 佇列 (續) 環狀佇列的刪除 void dequeue_f(void) { if(front == rear) printf(\n\n No item, queue is empty !\n); else { front = (front + 1) % MAX; printf(\n\n Item %s deleted\n, cq[front]); } } 佇列 (續) 環狀佇列的加入 ─ 使用TAG變數
您可能关注的文档
- cnki知识资源组织与管理平台的构建.ppt
- coachintaiwanworldstrategy.ppt
- collegeofscience,ntu.ppt
- collision-freepathplanningofdual-armrobotsbasedon.ppt
- commonshipping&tradingterms常用货运及贸易术语.doc
- comparisonofbankcompetivenessbetween.ppt
- computingandseiichapter4requirementsengineering.ppt
- content.doc
- contents.doc
- cpu结构和功能.ppt
最近下载
- 成人失禁性皮炎的预防与护理团标解读课件.pptx VIP
- 义务教育法课件.pptx VIP
- 义务教育数学课程标准(2022年版)重点.pdf VIP
- 高校辅导员招聘考试《基础知识》试题汇编(含答案).pdf VIP
- 第十四章烧伤冷伤咬蛰伤.pptx VIP
- FLOEFD 2021(Standalone 版)软件教程-第8章高级模块示例(管内燃烧).pdf VIP
- 未来之路 比尔盖茨.pdf VIP
- 物流园区绩效指标体系.pdf VIP
- 迅达电梯SMLCD人机界面培训5400主板按键操作培训.pptx
- FLOEFD 2021(Standalone 版)软件教程-第7章参数化研究示例.pdf VIP
文档评论(0)