- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
chap04-堆叠和伫列
資料結構導論 - C語言實作 堆疊和佇列 4.1 前言 堆疊(Stack)結構 只有單一的出入口,我們稱之為頂端(Top)。 資料的「新增」和「刪除」都從堆疊的頂端進出。 後進入堆疊的資料反而先出來。 佇列(Queue)結構 有一個入口和一個出口,我們稱入口為尾端(Rear),出口為頭端(Front)(或稱前端)。 資料從尾端「新增」,從頭端「刪除」 。 先進入佇列的資料將先出來。 4.2 堆疊(Stack) 堆疊具有以下特徵: 堆疊是一個有順序性的資料結構。 資料的「新增」和「刪除」都從堆疊的頂端(Top)這個唯一的出入口。 具有「後進先出(Last In First Out:LIFO)」(或「先進後出」(First In Last Out: FILO))的特性。 4.2 堆疊(Stack) 4.2.1 以陣列實作堆疊 以「陣列」實作堆疊時可歸納成底下幾個基本操作: 宣告陣列stack[n]:陣列大小n即代表堆疊容器的容量,且索引編號為0、1、2、...、n-1。 設定堆疊的頂端指標top:一開始top=-1,表示堆疊裡空無一物。當top=n-1時,表示堆疊已滿,無法再容納資料了。 判斷堆疊是否已滿:當top = n-1時,表示堆疊已滿。 4.2.1 以陣列實作堆疊 判斷堆疊是否已空:當top 0時,表示堆疊已空。 新增資料:將資料放入堆疊的動作我們稱之為push。若堆疊未滿,則top = top + 1後再將資料存入stack [top]位置。 刪除資料:從堆疊頂端取出資料的動作我們稱之為pop。若非空堆疊,則自堆疊頂端將stack [top]資料取出,然後top = top - 1。 4.2.1 以陣列實作堆疊 【例1】以陣列來實作堆疊的新增和刪除 4.2.1 以陣列實作堆疊(p.4-6) #include stdio.h #define n 5 #define true 1 #define false 0 int stack[n]; /* 宣告 stack[n] 為一個堆疊 */ int top = -1; int empty(void); int full(void); void push(int stack_data); int pop(); /* 判斷是否為空堆疊 */ int empty(void) { if(top 0){ printf(\n==堆疊已空!\n); return true; } else return false; } 4.2.1 以陣列實作堆疊(p.4-6) /* 判斷堆疊是否滿溢 */ int full(void) { if(top = n - 1){ printf(\n==堆疊已滿!\n); return true; } else return false; } /* 將資料 stack_data 放入堆疊 */ void push(int stack_data) { stack[++top] = stack_data; printf(將 %d 放入堆疊\n,stack_data); } /* 刪除堆疊頂端的資料 */ int pop() { return stack[top--]; } 4.2.1 以陣列實作堆疊(p.4-6) void main(void) { int i=0; int data[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; printf(== 已經宣告一個容量為 %d 的堆疊 ! \n,n); printf(\n==將資料1,2,3,4,5,6,7,8,9,10依序放入堆疊...\n); while(!full( )){ printf( 步驟(%d):,i+1); push(data[i]); i++; } i=1; printf(\n==自堆疊頂端取出資料...\n); while(!empty()) printf( 步驟(%d):自堆疊頂端取出 %d \n,i++, pop()); } 4.2.2 以鏈結串列實作堆疊 以「鏈結串列」實作堆疊時可歸納成底下幾個基本操作: 建立堆疊結構:宣告一個鏈結串列結構,一開始只有一個名為top的頭節點,它的鏈結欄指向null。 判斷堆疊是否已空:當top節點指向null時,表示堆疊已空無一物。 4.2.2 以鏈結串列實作堆疊 新增資料
您可能关注的文档
最近下载
- 华东理工大学《多元统计学》2022-2023学年第一学期期末试卷.pdf VIP
- 第2课 树立科学的世界观-【中职专用】2024年中职思想政治《哲学与人生》金牌课件(高教版2023·基础模块).pptx VIP
- 先进制造系统戴庆辉主编第2章先进制造系统的基本原理0201A02原理课件教学.ppt VIP
- 部编版一年级语文上册教案(全册).pdf VIP
- 金融投资证券 - 拼多多招股说明书(20201014201721).pdf VIP
- 成人坏死性筋膜炎诊治专家共识(2025版).pdf VIP
- 厂区绿化施工方案.doc VIP
- 氮气安全培训.ppt VIP
- 2025年口腔颌面外科考试题库[含答案].pdf
- 一年级小学衔接工作计划.docx VIP
文档评论(0)