數(shù)據(jù)結(jié)構(gòu)-第三章-棧與隊列ppt課件_第1頁
數(shù)據(jù)結(jié)構(gòu)-第三章-棧與隊列ppt課件_第2頁
數(shù)據(jù)結(jié)構(gòu)-第三章-棧與隊列ppt課件_第3頁
數(shù)據(jù)結(jié)構(gòu)-第三章-棧與隊列ppt課件_第4頁
數(shù)據(jù)結(jié)構(gòu)-第三章-棧與隊列ppt課件_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、棧和隊列廖勇毅棧 特點:LIFO 操作:初始化、插入、彈出。 定義棧 #define STACT_INIT_SIZE 100 #define STACKINCREMENT 10 typedef int SElemType; typedef structSElemType *base;SElemType *top;int stacksize; SqStack; 初始化棧 int InitStack(SqStack &S)S.base = (SElemType *)malloc(STACT_INIT_SIZE * sizeof(SElemType);if(!S.base)printf(“o

2、verflown);return 0;S.base = S;S.stacksize = STACT_INIT_SIZE;return 1; 插入元素 int Push(SqStack &S, SElemType &e)if(S - S.base = S.stacksize)S.base = (SElemType *)realloc(S.base, (S.stacksize + STACKINCREMENT) * sizeof(SElemType);if(!S.base)printf(“overflown);return 0;S = S.base + S.stacksize;S.

3、stacksize += STACKINCREMENT;*S+ = e;return 1; 彈出元素 int Pop(SqStack &S, SElemType &e)if(S = S.base) printf(“empty stack!n);return 0;e = *-S;return 1; 讀取棧頂元素 int GetTop(SqStack &S, SElemType &e)if(S = S.base) printf(“empty stack!n);return 0;e = *(S - 1);return 1; 判空int StackEmpty(SqSta

4、ck &S) if(S = S.base)return 1; elsereturn 0;數(shù)制轉(zhuǎn)換運用 十進(jìn)制數(shù)和其他d進(jìn)制轉(zhuǎn)換原理: N = (N / d) + (N % d)void conversion (int Num) SElemType e; SqStack S; InitStack(S); while (Num) Push(S, Num % 8); Num = Num/8; while (!StackEmpty(S) Pop(S,e); printf (%d, e); printf(n); 隊列 特點:FIFO 操作:初始化、入隊、出隊、讀取隊頭、獲取長度、判空、遍歷。循環(huán)

5、隊列 定義 #define MAXQSIZE 10 typedef int QElemType; typedef structQElemType *base;int front;int rear; SqQueue; 初始化 int InitQueue(SqQueue &Q)Q.base = (QElemType *)malloc(MAXQSIZE * sizeof(SqQueue);if(!Q.base)printf(overflown);return 0;Q.front = Q.rear = 0;return 1; 入隊 int EnQueue(SqQueue &Q, QEl

6、emType e)if(Q.rear + 1) % MAXQSIZE = Q.front)printf(queue is fulln);return 0;Q.baseQ.rear = e;Q.rear = (Q.rear + 1) % MAXQSIZE;return 1; 出隊 int DeQueue(SqQueue &Q, QElemType &e)if(Q.rear = Q.front)printf(queue is emptyn);return 0;e = Q.baseQ.front;Q.front = (Q.front + 1) % MAXQSIZE;return 1; 讀取隊頭元素 int GetHead(SqQueue &Q, QElemType &e)if(Q.rear = Q.front)printf(queue is emptyn);return 0;e = Q.baseQ.front;return 1; 獲取隊列長度 int QueueLength(SqQueue &Q)return (Q.rear + MAXQSIZE) - Q.front) % MAXQSIZE; 判空 bool QueueEmpty(SqQueue &Q)return (Q.rear = Q.front); 遍歷隊列 void Q

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論