數(shù)據(jù)結(jié)構(gòu)隊(duì)列演示文稿_第1頁(yè)
數(shù)據(jù)結(jié)構(gòu)隊(duì)列演示文稿_第2頁(yè)
數(shù)據(jù)結(jié)構(gòu)隊(duì)列演示文稿_第3頁(yè)
數(shù)據(jù)結(jié)構(gòu)隊(duì)列演示文稿_第4頁(yè)
數(shù)據(jù)結(jié)構(gòu)隊(duì)列演示文稿_第5頁(yè)
已閱讀5頁(yè),還剩43頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

數(shù)據(jù)結(jié)構(gòu)隊(duì)列演示文稿目前一頁(yè)\總數(shù)四十八頁(yè)\編于十四點(diǎn)數(shù)據(jù)結(jié)構(gòu)隊(duì)列目前二頁(yè)\總數(shù)四十八頁(yè)\編于十四點(diǎn)3.4.1隊(duì)列的概念一、什么是隊(duì)列隊(duì)列是限定僅能在表頭進(jìn)行刪除、表尾進(jìn)行插入的線性表。(a1,a2,...,ai-1,ai,ai+1,…,an)插入刪除目前三頁(yè)\總數(shù)四十八頁(yè)\編于十四點(diǎn)4)元素按a1,a2,a3,...,an

順序入隊(duì),第一個(gè)入隊(duì)的元素為a1,最后一個(gè)入隊(duì)的元素是an,第一個(gè)出隊(duì)的元素為a1;

說(shuō)明:1)表尾稱作隊(duì)尾,表頭稱為隊(duì)頭;2)a1為隊(duì)頭元素,an為隊(duì)尾元素;3)在表尾插入元素操作,稱為入隊(duì)操作;在表頭刪除元素的操作,稱為出隊(duì)操作;5)隊(duì)列具有先進(jìn)先出的特點(diǎn),又稱為先進(jìn)先出表(FIFO表)。入隊(duì)列

a1a2a3an隊(duì)頭隊(duì)尾出隊(duì)列目前四頁(yè)\總數(shù)四十八頁(yè)\編于十四點(diǎn)自測(cè)題1一個(gè)隊(duì)列的入列序列是1,2,3,4,則隊(duì)列的輸出序列是()。A.4,3,2,1B.1,2,3,4C.1,4,3,2D.3,2,4,1目前五頁(yè)\總數(shù)四十八頁(yè)\編于十四點(diǎn)二、隊(duì)列的抽象數(shù)據(jù)類型的定義InitQueue(&Q)結(jié)果:構(gòu)造一個(gè)空隊(duì)列Q。數(shù)據(jù)對(duì)象:D={ai|ai∈ElemSet,i=1,2,…,n}數(shù)據(jù)關(guān)系:R1={<ai-1,ai>};約定a1為隊(duì)頭元素,an為隊(duì)尾元素?;静僮?ADTQueue{}ADTQueueDestroyQueue(&Q)結(jié)果:銷毀隊(duì)列Q。條件:隊(duì)列Q已存在。目前六頁(yè)\總數(shù)四十八頁(yè)\編于十四點(diǎn)

功能:若隊(duì)列不空,則刪除Q的隊(duì)頭元素,用e返回其值,并返回OK;否則,返回ERROR。隊(duì)列的基本操作:1)初始化操作InitQueue(&Q)功能:構(gòu)造一個(gè)空隊(duì)列Q;2)銷毀操作DestroyQueue(&Q)功能:銷毀已存在隊(duì)列Q;3)置空操作ClearQueue(&Q)功能:將隊(duì)列Q置為空隊(duì)列;4)判空操作QueueEmpty(Q)功能:若隊(duì)列Q為空,則返回True;否則,返回False;5)取隊(duì)頭元素操作GetHead(Q,&e)功能:取隊(duì)頭元素,并用e返回;6)入隊(duì)操作EnQueue(&Q,e)功能:將元素e插入Q的隊(duì)尾;7)出隊(duì)操作DeQueue(&Q,&e)目前七頁(yè)\總數(shù)四十八頁(yè)\編于十四點(diǎn)在隊(duì)列的順序存儲(chǔ)結(jié)構(gòu)中,用一組連續(xù)存儲(chǔ)單元依次存儲(chǔ)從隊(duì)頭到隊(duì)尾的數(shù)據(jù)元素.此外,還需附加兩個(gè)變量:3.4.3隊(duì)列的順序存儲(chǔ)和實(shí)現(xiàn)一、隊(duì)列的順序存儲(chǔ)結(jié)構(gòu)隊(duì)頭指針front:指示隊(duì)頭元素的位置;隊(duì)尾指針rear:指示隊(duì)尾元素的位置。空隊(duì)列Q.rearQ.front012345Q.rearQ.frontJ1J2J3J1,J2和J3相繼入隊(duì)Q.rearQ.frontJ3J1和J2相繼出隊(duì)J4、J5和J6相繼入隊(duì)之后,J3和J4出隊(duì)Q.rearQ.frontJ5J6問(wèn)題:如何解決“假上溢”現(xiàn)象?目前八頁(yè)\總數(shù)四十八頁(yè)\編于十四點(diǎn)將順序隊(duì)列設(shè)想為首尾相連的環(huán)狀空間。當(dāng)Q.rear值超出隊(duì)列空間的最大位置時(shí),令Q.rear=0,使隊(duì)列空間能“循環(huán)”使用。J6J4J5Q.rearQ.front312405543210Q.rearQ.frontJ6J5J41、循環(huán)隊(duì)列循環(huán)使用空間的隊(duì)列。目前九頁(yè)\總數(shù)四十八頁(yè)\編于十四點(diǎn)循環(huán)隊(duì)列操作示意圖目前十頁(yè)\總數(shù)四十八頁(yè)\編于十四點(diǎn)2)在(a)狀態(tài)下,J6、J7、J8依次入隊(duì),隊(duì)列如圖(c),這時(shí)也有Q.front=Q.rear。540312J5Q.frontQ.rearJ4J3(a)Q.rear540312Q.frontJ5J6J7J8J3J4(c)隊(duì)滿2、隊(duì)空、隊(duì)滿的判別1)在(a)狀態(tài)下,J3、J4、J5依次出隊(duì),隊(duì)列狀態(tài)如圖(b),這時(shí)有Q.front=Q.rear;僅憑Q.front=Q.rear是否成立,無(wú)法判斷隊(duì)列是空還是滿。Q.frontQ.rear540312J3J4J5(b)隊(duì)空目前十一頁(yè)\總數(shù)四十八頁(yè)\編于十四點(diǎn)2)少用一個(gè)存儲(chǔ)單元,即當(dāng)隊(duì)列達(dá)到圖(d)所示狀態(tài)時(shí),就認(rèn)為隊(duì)列已滿,這時(shí)的條件是Q.front=(Q.rear+1)%6。如何判斷循環(huán)隊(duì)列隊(duì)空、隊(duì)滿?

?Q.rear540312Q.frontJ5J6J7J3J4(d)兩種方法:1)另設(shè)一個(gè)標(biāo)志位以區(qū)分隊(duì)空、隊(duì)滿。目前十二頁(yè)\總數(shù)四十八頁(yè)\編于十四點(diǎn)自測(cè)題2循環(huán)隊(duì)列的優(yōu)點(diǎn)是什么,如何判斷“空”和“滿”。【解答】循環(huán)隊(duì)列解決了常規(guī)用0--m-1的數(shù)組表示隊(duì)列時(shí)出現(xiàn)的“假溢出”(即隊(duì)列未滿但不能入隊(duì))。在循環(huán)隊(duì)列中,我們?nèi)杂藐?duì)頭指針等于隊(duì)尾指針表示隊(duì)空,而用犧牲一個(gè)單元的辦法表示隊(duì)滿:即當(dāng)隊(duì)尾指針加1(取模)等于隊(duì)頭指針時(shí),表示隊(duì)列滿。也有使用全部單元,通過(guò)設(shè)標(biāo)記來(lái)解決“空”和“滿”的。目前十三頁(yè)\總數(shù)四十八頁(yè)\編于十四點(diǎn)3、循環(huán)隊(duì)列的類型定義#defineMAXQSIZE100//最大隊(duì)列長(zhǎng)度

typedefstruct{

QElemType*base;//初始化時(shí)動(dòng)態(tài)分配存儲(chǔ)空間的基址

intfront;//隊(duì)頭指針,指向隊(duì)頭元素(隊(duì)列不空)

intrear;//隊(duì)尾指針,指向隊(duì)尾元素的下一個(gè)位置(隊(duì)列不空)}SqQueue;只是稱為指針,實(shí)現(xiàn)時(shí)不一定用指針變量目前十四頁(yè)\總數(shù)四十八頁(yè)\編于十四點(diǎn)設(shè)Q為SqQueue類型的變量,用于存儲(chǔ)隊(duì)列。設(shè)為隊(duì)列Q分配空間大小為MAXQSIZE=6。初始建隊(duì)時(shí),令Q.front=Q.rear=0。Q.frontQ.rear540312Q.base目前十五頁(yè)\總數(shù)四十八頁(yè)\編于十四點(diǎn)二、循環(huán)隊(duì)列的基本操作算法1、初始化操作InitQueue_Sq(SqQueue&Q)參數(shù):Q是存放隊(duì)列的結(jié)構(gòu)變量;功能:建一個(gè)空隊(duì)列Q。Q.frontQ.rear540312Q.base#defineMAXQSIZE100//最大隊(duì)列長(zhǎng)度

typedefstruct{

QElemType*base;//基址

intfront;//指向隊(duì)頭元素

intrear;//指向隊(duì)尾元素的下一個(gè)位置}SqQueue;目前十六頁(yè)\總數(shù)四十八頁(yè)\編于十四點(diǎn)StatusInitQueue_Sq(SqQueue&Q){

//構(gòu)造一個(gè)空隊(duì)列Q

Q.base=(QElemType*)malloc(MAXQSIZE*sizeof(QElemType));

if(!Q.base)exit(OVERFLOW);//存儲(chǔ)分配失敗

Q.front=Q.rear=0;

returnOK;

}Q.frontQ.rear540312Q.base#defineMAXQSIZE100//最大隊(duì)列長(zhǎng)度

typedefstruct{

QElemType*base;//基址

intfront;//指向隊(duì)頭元素

intrear;//指向隊(duì)尾元素的下一個(gè)位置}SqQueue;目前十七頁(yè)\總數(shù)四十八頁(yè)\編于十四點(diǎn)intQueueLength_Sq(SqQueueQ){

return(Q.rear–Q.front+MAXQSIZE)%MAXQSIZE;

}2、計(jì)算隊(duì)列長(zhǎng)度操作QueueLength_Sq(SqQueueQ)參數(shù):Q是存放隊(duì)列的結(jié)構(gòu)變量;功能:計(jì)算隊(duì)列的長(zhǎng)度。Q.rear540312Q.frontJ5J6J7J3J4Q.rear目前十八頁(yè)\總數(shù)四十八頁(yè)\編于十四點(diǎn)3)修改隊(duì)尾指針,使隊(duì)尾指針指向隊(duì)尾元素的下一個(gè)位置。Q.frontQ.rear540312J1J3J2元素e入隊(duì)前Q.frontQ.rear540312J1J3J2e元素e入隊(duì)后3、入隊(duì)操作EnQueue_Sq(SqQueue&Q,QElemTypee)功能:將元素e插入隊(duì)尾。主要步驟:1)Q是否已滿,若滿,返回ERROR;否則轉(zhuǎn)2);2)將元素e寫(xiě)入隊(duì)尾;目前十九頁(yè)\總數(shù)四十八頁(yè)\編于十四點(diǎn)StatusEnQueue_Sq(SqQueue&Q,QElemTypee){

}if((Q.rear+1)%MAXQSIZE==Q.front)returnERROR;//隊(duì)列滿Q.base[Q.rear]=e;//將元素e插入隊(duì)尾Q.rear=(Q.rear+1)%MAXQSIZE;//修改隊(duì)尾指針returnOK;目前二十頁(yè)\總數(shù)四十八頁(yè)\編于十四點(diǎn)自測(cè)題3循環(huán)隊(duì)列存儲(chǔ)在數(shù)組A[0..m]中,則入隊(duì)時(shí)的操作為()。A.rear=rear+1B.rear=(rear+1)mod(m-1)C.rear=(rear+1)modmD.rear=(rear+1)mod(m+1)目前二十一頁(yè)\總數(shù)四十八頁(yè)\編于十四點(diǎn)3)修改隊(duì)頭指針,刪除隊(duì)頭元素。Q.frontQ.rear540312J1J3J2出隊(duì)操作前Q.frontQ.rear540312J1J3J2出隊(duì)操作后eJ14、出隊(duì)操作DeQueue_Sq(SqQueue&Q,QElemType&e)功能:刪除隊(duì)頭元素,用e返回其值。主要步驟:1)Q是否為空,若空,返回ERROR;否則,轉(zhuǎn)2);2)將隊(duì)頭元素賦值給e;目前二十二頁(yè)\總數(shù)四十八頁(yè)\編于十四點(diǎn)StatusDeQueue_Sq(SqQueue&Q,QElemType&e){

}if(Q.rear==Q.front)returnERROR;//隊(duì)列空e=Q.base[Q.front];//將隊(duì)頭元素賦給eQ.front=(Q.front+1)%MAXQSIZE;//修改隊(duì)頭指針returnOK;目前二十三頁(yè)\總數(shù)四十八頁(yè)\編于十四點(diǎn)一、什么是鏈隊(duì)列用鏈表存儲(chǔ)的隊(duì)列。為便于操作,一個(gè)鏈隊(duì)列需要分別指示隊(duì)頭和隊(duì)尾的兩個(gè)指針。

J1∧Q.frontQ.rearJ2∧空鏈隊(duì)列Q.frontQ.rear∧頭結(jié)點(diǎn)3.4.2鏈隊(duì)列——隊(duì)列的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)和實(shí)現(xiàn)鏈隊(duì)列的表頭結(jié)點(diǎn)Q.front==Q.rear目前二十四頁(yè)\總數(shù)四十八頁(yè)\編于十四點(diǎn)二、鏈隊(duì)列的類型定義typedefstructQNode{//鏈隊(duì)列結(jié)點(diǎn)的類型定義

QElemTypedata;

structQNode*next;}QNode,*QueuePtr;typedefstruct{

//鏈隊(duì)列表頭結(jié)點(diǎn)的類型定義

QueuePtrfront;//隊(duì)頭指針,指向鏈表的頭結(jié)點(diǎn)

QueuePtr

rear;//隊(duì)尾指針,指向隊(duì)尾結(jié)點(diǎn)}LinkQueue;//將頭尾指針?lè)庋b在一起的鏈隊(duì)J1∧Q.frontQ.rearJ2∧目前二十五頁(yè)\總數(shù)四十八頁(yè)\編于十四點(diǎn)三、鏈隊(duì)列基本操作算法1、初始化操作InitQueue_L(LinkQueue&Q):創(chuàng)建空的鏈隊(duì)列。

Q.frontQ.reartypedefstructQNode{//鏈隊(duì)列結(jié)點(diǎn)的類型定義

QElemTypedata;

structQNode*next;}QNode,*QueuePtr;typedefstruct{//鏈隊(duì)列表頭結(jié)點(diǎn)的類型定義

QueuePtrfront;//隊(duì)頭指針,指向鏈表的頭結(jié)點(diǎn)

QueuePtr

rear;//隊(duì)尾指針,指向隊(duì)尾結(jié)點(diǎn)}LinkQueue;∧目前二十六頁(yè)\總數(shù)四十八頁(yè)\編于十四點(diǎn)if(!Q.front)exit(OVERFLOW);Q.front

->next=NULL;returnOK;StatusInitQueue_L(LinkQueue&Q){}Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode));//申請(qǐng)頭結(jié)點(diǎn)Q.frontQ.reartypedefstructQNode{//鏈隊(duì)列結(jié)點(diǎn)的類型定義

QElemTypedata;

structQNode*next;}QNode,*QueuePtr;typedefstruct{//鏈隊(duì)列表頭結(jié)點(diǎn)的類型定義

QueuePtrfront;//隊(duì)頭指針,指向鏈表的頭結(jié)點(diǎn)

QueuePtr

rear;//隊(duì)尾指針,指向隊(duì)尾結(jié)點(diǎn)}LinkQueue;∧目前二十七頁(yè)\總數(shù)四十八頁(yè)\編于十四點(diǎn)Q.frontQ.rear

銷毀后J1∧Q.frontQ.rearJ2∧

銷毀前2、銷毀操作DestroyQueue_L(LinkQueue&Q):回收空間。

typedefstructQNode{//鏈隊(duì)列結(jié)點(diǎn)的類型定義

QElemTypedata;

structQNode*next;}QNode,*QueuePtr;typedefstruct{//鏈隊(duì)列表頭結(jié)點(diǎn)的類型定義

QueuePtrfront;//隊(duì)頭指針,指向鏈表的頭結(jié)點(diǎn)

QueuePtr

rear;//隊(duì)尾指針,指向隊(duì)尾結(jié)點(diǎn)}LinkQueue;∧∧目前二十八頁(yè)\總數(shù)四十八頁(yè)\編于十四點(diǎn)StatusDestroyQueue_L(LinkQueue&Q){

}while(Q.front){

}//while

Q.rear=Q.front->next;free(Q.front);Q.front=Q.rear;returnOK;Q.frontQ.rear

銷毀后J1∧Q.frontQ.rearJ2∧

銷毀前∧∧目前二十九頁(yè)\總數(shù)四十八頁(yè)\編于十四點(diǎn)3、入隊(duì)操作EnQueue_L(LinkQueue&Q,QElemTypee)Q.front∧J1∧Q.reare∧J1typedefstructQNode{//鏈隊(duì)列結(jié)點(diǎn)的類型定義

QElemTypedata;

structQNode*next;}QNode,*QueuePtr;typedefstruct{//鏈隊(duì)列表頭結(jié)點(diǎn)的類型定義

QueuePtrfront;//隊(duì)頭指針,指向鏈表的頭結(jié)點(diǎn)

QueuePtr

rear;//隊(duì)尾指針,指向隊(duì)尾結(jié)點(diǎn)}LinkQueue;目前三十頁(yè)\總數(shù)四十八頁(yè)\編于十四點(diǎn)p=(QueuePtr)malloc(sizeof(QNode));if(!p)exit(OVERFLOW);p->data=e;p->next=NULL;//申請(qǐng)新結(jié)點(diǎn)Q.rear->next=p;returnOK;StatusEnQueue_L(LinkQueue&Q,QElemTypee){}Q.rear

=p;//插入在隊(duì)尾Q.front∧J1∧Q.reare∧J1目前三十一頁(yè)\總數(shù)四十八頁(yè)\編于十四點(diǎn)zhoujin0xin

SQ.frontQ.rear

pe=p->data=zhou

pe=p->data=jin

pe=p->data=xinQ.rear04、離開(kāi)隊(duì)列DeQueue_L(LinkQueue&Q,QElemType&e)

注意!目前三十二頁(yè)\總數(shù)四十八頁(yè)\編于十四點(diǎn)p=Q.front->next;e=p->data;//取第一個(gè)結(jié)點(diǎn)free(p);returnOK;StatusDeQueue_L(LinkQueue&Q,QElemType&e){}Q.front->next=p->next;//刪除第一個(gè)結(jié)點(diǎn)if(Q.front==Q.rear)returnERROR;if(Q.rear==p)Q.rear=Q.front;//若需要?jiǎng)h除的隊(duì)頭結(jié)點(diǎn)就是尾結(jié)點(diǎn)J1∧Q.frontQ.rearJ2∧目前三十三頁(yè)\總數(shù)四十八頁(yè)\編于十四點(diǎn)自測(cè)題4用鏈接方式存儲(chǔ)的隊(duì)列,在進(jìn)行刪除運(yùn)算時(shí)()。A.僅修改頭指針B.僅修改尾指針C.頭、尾指針都要修改D.頭、尾指針可能都要修改目前三十四頁(yè)\總數(shù)四十八頁(yè)\編于十四點(diǎn)算法設(shè)計(jì)題1假設(shè)以帶頭結(jié)點(diǎn)的循環(huán)鏈表表示隊(duì)列,并且只設(shè)一個(gè)指針指向隊(duì)尾結(jié)點(diǎn),不設(shè)頭指針,試設(shè)計(jì)相應(yīng)的入隊(duì)列和出隊(duì)列的算法?!璗ail隊(duì)頭隊(duì)尾目前三十五頁(yè)\總數(shù)四十八頁(yè)\編于十四點(diǎn)typedefstructLqueue{ElemTypedata;structLqueue*next;}Lqueue,*Queueptr;

voidQueueIn(Queueptrrear,ElemTypex){//入隊(duì)列

s=(Queueptr)malloc(sizeof(LQueue));s->data=x;s->next=rear->next;//元素插入隊(duì)尾

rear->next=s;rear=s;//求得新的隊(duì)尾}

…Tail隊(duì)頭隊(duì)尾目前三十六頁(yè)\總數(shù)四十八頁(yè)\編于十四點(diǎn)typedefstructLqueue{ElemTypedata;structLqueue*next;}Lqueue,*Queueptr;

…Tail隊(duì)頭隊(duì)尾ElemTypeQueueOut(Queueptrrear){//出隊(duì)列if(rear->next->next==rear)printf("隊(duì)列為空");else{p=rear->next;q=p->next;p->next=q->next;x=q->data;if(q==rear)rear=p;free(q);//刪除隊(duì)頭元素

return(x);}//else}

目前三十七頁(yè)\總數(shù)四十八頁(yè)\編于十四點(diǎn)算法設(shè)計(jì)題2要求完全利用循環(huán)隊(duì)列中的元素空間,設(shè)置一個(gè)標(biāo)志域tag,并以tag的值是0或1來(lái)區(qū)分尾指針和頭指針相同時(shí)的隊(duì)列狀態(tài)是“空”還是“不空”。請(qǐng)編寫(xiě)與此結(jié)構(gòu)相對(duì)應(yīng)的入隊(duì)和出隊(duì)的算法。類型定義:typedefstruct{ElemTypedata[m];intrear,front;//隊(duì)尾和隊(duì)頭指針

inttag;//標(biāo)記,0為空,1為非空

}CycQueue;

目前三十八頁(yè)\總數(shù)四十八頁(yè)\編于十四點(diǎn)只設(shè)標(biāo)志的循環(huán)隊(duì)列的入隊(duì)voidQueueIn(CycQueuecq,ElemTypex){if(cq.tag==1&&cq.front==cq.rear){printf(“隊(duì)滿\n”);exit(0);}else{cq.rear=(cq.rear+1)%m;cq.data[cq.rear]=x;if(cq.tag==0)cq.tag=1;//由空變不空標(biāo)記

}//else}目前三十九頁(yè)\總數(shù)四十八頁(yè)\編于十四點(diǎn)只設(shè)標(biāo)志的循環(huán)隊(duì)列的出隊(duì)voidQueueOut(CycQueuecq);{if(cq.tag==0){printf(“隊(duì)空\(chéng)n”);exit(0);}else{cq.front=(cq.front+1)%m;if(cq.front==cq.rear)cq.tag=0;//隊(duì)列由不空變空

}//else}目前四十頁(yè)\總數(shù)四十八頁(yè)\編于十四點(diǎn)算法設(shè)計(jì)3用棧模擬隊(duì)列請(qǐng)利用兩個(gè)棧S1和S2來(lái)模擬一個(gè)隊(duì)列。已知棧的三個(gè)運(yùn)算定義如下:PUSH(ST,x):元素x入ST棧;POP(ST,x):ST棧頂元素出棧,賦給變量x;Sempty(ST):判ST棧是否為空。那么如何利用棧的運(yùn)算來(lái)實(shí)現(xiàn)該隊(duì)列的三個(gè)運(yùn)算:

enqueue:插入一個(gè)元素入隊(duì)列;dequeue:刪除一個(gè)元素出隊(duì)列;queue_empty:判隊(duì)列為空。【上海交通大學(xué)1999二(12分)】【廈門(mén)大學(xué)2005六(15分)】目前四十一頁(yè)\總數(shù)四十八頁(yè)\編于十四點(diǎn)棧模擬隊(duì)列——入隊(duì)inttop1;∥top1是棧s1的棧頂指針,是全局變量intenqueue(stacks1,ElemTypex)∥用入棧模擬入隊(duì){if(top1==n&&!Sempty(s2)){printf(“棧滿”);return(0);}∥s1滿s2非空,這時(shí)s1不能再入棧

if(top1==n&&Sempty(s2))∥s2空,將s1退棧,再壓棧到s2{while(!Sempty(s1)){POP(s1,x);PUSH(s2,x);}push(s1,x);return(1);∥x入棧,實(shí)現(xiàn)了隊(duì)列元素的入隊(duì)}目前四十二頁(yè)\總數(shù)四十八頁(yè)\編于十四點(diǎn)棧模擬隊(duì)列——出隊(duì)voiddequeue(stacks2,s1)∥s2是輸出棧,將s2棧頂元素退棧,實(shí)現(xiàn)隊(duì)列元素的出隊(duì){if(!Sempty(s2))∥棧s2不空,則直接出隊(duì)

{POP(s2,x);printf(“出隊(duì)元素為”,x);}elseif(Sempty(s1))∥處理s2空棧

{printf(“隊(duì)列空”);exit(0);}∥若輸入棧也空,則隊(duì)空

else∥先將棧s1倒入s2中,再出隊(duì)

{while(!Sempty(s1)){POP(s1,x);PUSH(s2,x);}POP(s2,x);∥s2退棧相當(dāng)隊(duì)列出隊(duì)

printf(“出隊(duì)元素”,x);}}∥結(jié)束算法dequue目前四十三頁(yè)\總數(shù)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論