欧美精品一二区,性欧美一级,国产免费一区成人漫画,草久久久久,欧美性猛交ⅹxxx乱大交免费,欧美精品另类,香蕉视频免费播放

數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版) 第3章 棧與隊(duì)列

上傳人:da****ge 文檔編號(hào):59535546 上傳時(shí)間:2022-03-03 格式:DOC 頁(yè)數(shù):25 大小:919.50KB
收藏 版權(quán)申訴 舉報(bào) 下載
數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版) 第3章 棧與隊(duì)列_第1頁(yè)
第1頁(yè) / 共25頁(yè)
數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版) 第3章 棧與隊(duì)列_第2頁(yè)
第2頁(yè) / 共25頁(yè)
數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版) 第3章 棧與隊(duì)列_第3頁(yè)
第3頁(yè) / 共25頁(yè)

下載文檔到電腦,查找使用更方便

16 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版) 第3章 棧與隊(duì)列》由會(huì)員分享,可在線閱讀,更多相關(guān)《數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版) 第3章 棧與隊(duì)列(25頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、第3章 棧與隊(duì)列 棧與隊(duì)列:限定操作的線性表。 1 棧 1.1 邏輯結(jié)構(gòu) 1.1.1 定義 限定只能在表的一端進(jìn)行插入、刪除的線性表。   棧頂top,棧底bottom。   后進(jìn)先出LIFO表(Last In First Out) 1.1.2 基本操作 進(jìn)棧Push/出棧Pop 取棧頂元素GetTop 判別??読sEmpty/棧滿isFull 1.1.3 應(yīng)用領(lǐng)域 實(shí)例:“進(jìn)制數(shù)轉(zhuǎn)換”、“表達(dá)式求值”、“函數(shù)調(diào)用關(guān)系”、“括號(hào)匹配問(wèn)題”、“漢諾塔問(wèn)題”、“迷宮問(wèn)題”、“九連環(huán)”…… 許多問(wèn)題的求解分為若干步驟,而當(dāng)前步驟的解答,是建立在后繼步驟的

2、解答基礎(chǔ)上的。=》問(wèn)題分解的步驟和求解的步驟次序恰好相反。 1.2 順序棧 ///////////////////////////////// // 項(xiàng)目路徑:1順序棧 ///////////////////////////////// 1.2.1 類的定義 const int StackSize=10; template class SeqStack { T m_Data[StackSize]; // 存放棧元素的數(shù)組 int m_Top; // 棧頂指針,表示下一個(gè)進(jìn)棧元素的下標(biāo) public: SeqStack( )

3、; SeqStack(SeqStack &Q); ~SeqStack( ); void Push(T e); // 進(jìn)棧 T Pop( ); // 出棧 T GetTop( ); // 取棧頂元素(不刪除) bool isEmpty( ); // 判斷棧是否為空 }; 1.2.2 基本操作 1.2.2.1 構(gòu)造/析構(gòu) template SeqStack::SeqStack( ) // 構(gòu)造 { m_Top=0; } template Seq

4、Stack::SeqStack(SeqStack &Q) // 拷貝構(gòu)造 { m_Top = Q.m_Top; for(int i=0; i SeqStack::~SeqStack( ){} // 析構(gòu) 1.2.2.2 狀態(tài)判斷 // 判斷棧是否為空 template bool SeqStack::isEmpty( ) { if(m_Top==0) return true; return

5、false; } // 判斷棧是否為滿 template bool SeqStack::isFull( ) { if(m_Top==StackSize) return true; return false; } 1.2.2.3 進(jìn)棧/出棧 template void SeqStack::Push(T e) // 進(jìn)棧 { if(m_Top == StackSize) throw "上溢"; m_Data[m_Top]=e; m_Top++; } template T

6、SeqStack::Pop( ) // 出棧 { if(m_Top==0) throw "下溢"; m_Top--; return m_Data[m_Top]; } template T SeqStack::GetTop() // 取棧頂元素值 { if(m_Top==0) throw "下溢"; return m_Data[m_Top-1]; } 1.3 順序棧的聯(lián)想 缺點(diǎn):空間浪費(fèi) 思考:二棧合用同一順序空間? ///////////////////////////////// /

7、/ 項(xiàng)目路徑:1順序棧(2個(gè)) ///////////////////////////////// 1.4 鏈棧 ///////////////////////////////// // 項(xiàng)目路徑:2鏈棧 ///////////////////////////////// 1.4.1 類的定義 template struct LinkNode { T data; LinkNode *next; }; template class LinkStack { LinkNode *m_Top; //

8、 棧頂指針:鏈表頭指針 public: LinkStack( ); ~LinkStack( ); void Push(T x); // 進(jìn)棧 T Pop( ); // 出棧 T GetTop( ); // 取棧頂元素(不刪除) bool isEmpty( ); // 判斷鏈棧是否為空棧 }; // 棧滿:系統(tǒng)內(nèi)存不夠 1.4.2 基本操作 1.4.2.1 構(gòu)造/析構(gòu) template LinkStack::LinkStack( ) { m_Top = NULL; } temp

9、late LinkStack::~LinkStack( ) { while(m_Top) { LinkNode *p=m_Top->next; delete m_Top; m_Top=p; } } 1.4.2.2 進(jìn)棧/出棧 // 進(jìn)棧 template void LinkStack::Push(T e) { LinkNode *newp = new LinkNode; newp->data = e; newp->next = m_Top; m_T

10、op = newp; } // 出棧 template T LinkStack::Pop( ) { if(m_Top==NULL) throw "下溢"; T e = m_Top->data; // 暫存棧頂元素 LinkNode *p = m_Top; m_Top = m_Top->next; delete p; // 刪除首結(jié)點(diǎn) return e; } 2 棧的應(yīng)用 常識(shí)體驗(yàn):函數(shù)調(diào)用棧 2.1 進(jìn)制轉(zhuǎn)換 示例數(shù)據(jù): (1348)10=(2504)8,除8取余的過(guò)程

11、: N n div 8 n mod 8 1348 168 4 168 21 0 21 2 5 2 0 2 void Conversion(int n,int k) { LinkStack S; while( n!=0 ) { S.Push(n%8); // 進(jìn)棧次序: 個(gè)位、十位 ...高位 n=n/8; } while(!S.isEmpty()) cout<

12、 : 0 Equal( "(((a)(b))" ) : 1 Equal( "((a)(b)))" ) : -1 int Equal(char s[]) { LinkStack S; for(int i=0; s[i]; i++) switch(s[i]) { case '(': S.Push(s[i]); break; case ')': if(S.isEmpty()) return(-1); // )多 S.Pop(); break; } if( !S.isEmpty() )

13、 return(1); // (多 return(0); // 完全匹配 } 2.3 迷宮算法(思考) 2.4 后綴表達(dá)式求值 中綴表達(dá)式 后綴表達(dá)式 A+B*C ABC*+ B*(D-C)+A BDC-*A+ 2*(3-4)+5 234-*5+ 算符在運(yùn)算數(shù)之間 算符在運(yùn)算數(shù)之后,沒(méi)有括號(hào),算符沒(méi)有優(yōu)先級(jí) 按“算符優(yōu)先級(jí)”求值 按“順序計(jì)算法”求值 輔助數(shù)據(jù)結(jié)構(gòu):一個(gè)運(yùn)算數(shù)棧OPND。 算法:自左向右掃描后綴表達(dá)式,直至遇到結(jié)束符為止。 遇算數(shù):進(jìn)棧, 遇算符:退棧二數(shù),運(yùn)算結(jié)果再進(jìn)棧, // 只能處理

14、1位數(shù)運(yùn)算數(shù) float PostExpression(char s[]) { LinkStack OPND; // 運(yùn)算數(shù)棧 for(int i=0; s[i]; i++) if(s[i]>='0' && s[i]<='9') OPND.Push(s[i]-'0'); else { float opd1=OPND.Pop(); float opd2=OPND.Pop(); OPND.Push( Eval(opd2,s[i],opd1) ); } return(OPND.GetTop

15、()); /* 棧中唯一值:表達(dá)式值 */ } float Eval(float a, char op, float b) { switch(op) { case '+': return(a+b); case '-': return(a-b); case '/': return(a/b); case '*': return(a*b); } } 2.5 中綴表達(dá)式轉(zhuǎn)換為后綴表達(dá)式 示例數(shù)據(jù): Mid[]: "2*(3-4)+5#" Post[]:"234-*5+" 輔助數(shù)據(jù)結(jié)構(gòu):一個(gè)運(yùn)算符棧OPTR。

16、 算法:自左向右掃描Mid[],直至遇到結(jié)束符#。 遇算數(shù):加入Post[]。 遇算符op:取棧頂算符pre_op 若op>pre_op:op進(jìn)棧; 若op

17、 c='*' c='(' c='-' c='/' c=')' c=')' C=')' c='+' c='+' c='+' C='#' void MidToPost(char Mid[],char Post[]) { LinkStack OPTR; // 運(yùn)算符棧 OPTR.Push('#'); int iMid=0,iPost=0; char c=Mid[iMid++]; while(c!='#' || OPTR.GetTop()!='#') { if(c>='0' && c<='9')

18、 { Post[iPost++]=c; c=Mid[iMid++]; continue; } char pre_op=OPTR.GetTop(); switch( Precede(pre_op,c) ) // 比較算符優(yōu)先級(jí) { case '<': // pre_op < c OPTR.Push(c); c=Mid[iMid++]; break; case '=': OPTR.Pop(); c=Mid[iMid++]; break; case '>': // pre_o

19、p > c OPTR.Pop(); Post[iPost++]=pre_op; } } Post[iPost]=0; } // 算符優(yōu)先級(jí)比較的代碼 分析:先乘除,后加減;從左到右;先括號(hào)內(nèi),再括號(hào)外。 后算符 前算符 + - × / ( ) # + > > < < < > > - > > < < < > > × > > > > < > > / > > > > < > > ( < < < < < = ) > > > > >

20、> # < < < < < = char priority[7][7]= // + - * / ( ) # {{'>', '>', '<', '<', '<', '>', '>'}, // + {'>', '>', '<', '<', '<', '>', '>'}, // - {'>', '>', '>', '>', '<', '>', '>'}, // * {'>', '>', '>', '>', '<', '>', '>'}, // / {'<', '<', '<', '<', '

21、<', '=', '0'}, // ( {'>', '>', '>', '>', '0', '>', '>'}, // ) {'<', '<', '<', '<', '<', '0', '='} // # }; int OpID(char op) { switch (op) { case '+' : return(0); case '-' : return(1); case '*' : return(2); case '/' : return(3); case '(' : return(4);

22、 case ')' : return(5); case '#' : return(6); } } char Precede(char op1,char op2) { return(priority[OpID(op1)][OpID(op2)]); } 2.6 中綴表達(dá)式求值的算法 示例數(shù)據(jù): s[]: 1+2*(3+4*(5+6))# 與2.5算法的相似處: 當(dāng)前運(yùn)算是否立即執(zhí)行?必須先和“上一個(gè)運(yùn)算符”比較優(yōu)先級(jí)。 輔助數(shù)據(jù)結(jié)構(gòu):運(yùn)算符棧OPTR,運(yùn)算數(shù)棧OPND 算法:自左向右掃描s[],直至遇到結(jié)束符#。 遇算數(shù)

23、:OPND.Push(c-'0'); 遇算符op:取棧頂算符pre_op 若op>pre_op:OPTR.Push(c); 若op

24、kStack OPND; // 運(yùn)算數(shù)棧 LinkStack OPTR; OPTR.Push('#'); // 運(yùn)算符棧 int i=0; while(s[i]!='#' || OPTR.GetTop()!='#') { char c=s[i]; if(c>='0' && c<='9') { OPND.Push(c-'0'); i++; continue; } char pre_op=OPTR.GetTop(); switch( Precede(pre_op, c) ) {

25、case '<': // pre_op < c OPTR.Push(c); i++; break; case '=': OPTR.Pop(); i++; break; case '>': // pre_op > c 執(zhí)行pre_op OPTR.Pop(); float opd1=OPND.Pop(); float opd2=OPND.Pop(); OPND.Push( Eval(opd2,pre_op,opd1) );

26、 } } return(OPND.GetTop()); } 測(cè)試案例:"#", "3#","3+5#","3+5+2#" "3*5+2#", "3+5*2#","(3+5)*2#", "(3+5)*(2+1)#","((3+5)/2+1)*2#" ………… 作業(yè)與上機(jī) 實(shí)現(xiàn)棧類和中綴表達(dá)式求值功能。 層次1:運(yùn)算數(shù)可以實(shí)數(shù)、負(fù)數(shù) 層次2:表達(dá)式語(yǔ)法檢查、報(bào)錯(cuò)誤位置 層次3:多個(gè)表達(dá)式依次求值(含變量) 層次4:超長(zhǎng)運(yùn)算數(shù)的表達(dá)式求值 附錄:九連環(huán)的玩法 void down_1(int n)

27、 { printf("%2ddown,",n); } //下第n個(gè)環(huán) void down_12() { printf("12down,"); } //下1、2環(huán) void up_1(int n) { printf("%2dup, ",n); } //上第n個(gè)環(huán) void up_12() { printf("12up, "); } //上1、2環(huán) void huan_down(int n) //下前n個(gè)環(huán) { if(n==1) { down_1(n); return; } if(n==2) { down_12(); return;

28、} huan_down(n-2); down_1(n); huan_up(n-2); huan_down(n-1); } void huan_up(int n) //上前n個(gè)環(huán) { if(n==1) { up_1(n); return; } if(n==2) { up_12(); return; } huan_up(n-1); huan_down(n-2); up_1(n); huan_up(n-2); } //打印下九連環(huán)的步驟 main(){ huan_down(9); } 3 隊(duì)列 3.1 邏輯結(jié)構(gòu)

29、  只能在一端(隊(duì)尾rear)插入,在另一端(隊(duì)頭front)刪除的線性表。   先進(jìn)先出表FIFO(First In First Out) 基本操作:進(jìn)隊(duì)列Enter/出隊(duì)列Leave 判別隊(duì)列空isEmpty/隊(duì)列滿isFull 應(yīng)用領(lǐng)域:排隊(duì)模型。排隊(duì)問(wèn)題無(wú)處不在,各種服務(wù)行業(yè)、甚至生產(chǎn)管理中都存在排隊(duì)問(wèn)題。 3.2 鏈隊(duì)列 ///////////////////////////////// // 項(xiàng)目路徑:3鏈隊(duì)列 ///////////////////////////////// 3.2.1 類的定義 template

30、ass T> struct LinkNode { T data; LinkNode *next; }; template class LinkQueue { LinkNode *m_Front; // 隊(duì)頭指針 LinkNode *m_Rear; // 隊(duì)尾指針 public: LinkQueue( ); ~LinkQueue( ); void Enter(T e); // 進(jìn)隊(duì)列 T Leave( ); // 出隊(duì)列 T GetFro

31、nt( ); // 取隊(duì)列的隊(duì)頭元素 bool isEmpty( ); // 判斷隊(duì)列是否為空 }; 3.2.2 基本操作 3.2.2.1 構(gòu)造/析構(gòu) template LinkQueue::LinkQueue() { m_Front = m_Rear = NULL; } template LinkQueue::~LinkQueue( ) { /* 銷毀隊(duì)列 */ } 3.2.2.2 進(jìn)/出隊(duì)列 // 進(jìn)隊(duì)列 template void LinkQueue<

32、T>::Enter(T e) { LinkNode *newp = new LinkNode; newp->data=e; newp->next=NULL; if(m_Front==NULL) m_Front=m_Rear=newp; else { m_Rear->next=newp; m_Rear=newp; } } // 出隊(duì)列 template T LinkQueue::Leave() { if(m_Front==NULL) throw "下溢"; LinkNode *p=m_Front;

33、 T e=p->data; //暫存隊(duì)頭元素 m_Front=p->next; delete p; if(m_Front==NULL) m_Rear=NULL; return e; } //取隊(duì)頭元素 template T LinkQueue::GetFront() { if(m_Front==NULL) throw "下溢"; return m_Front->data; } 3.2 順序隊(duì)列 ///////////////////////////////// // 項(xiàng)目路徑:4循環(huán)隊(duì)列

34、///////////////////////////////// 3.2.1 類的定義 const int QueueSize=6; // 隊(duì)列存儲(chǔ)空間的長(zhǎng)度 template class CirQueue { T m_Data[QueueSize]; // 存放隊(duì)列元素的數(shù)組 int m_Front; // 隊(duì)頭指針 int m_Rear; // 隊(duì)尾指針 public: CirQueue( ); ~CirQueue( ); void Enter(T e); //

35、 進(jìn)隊(duì)列 T Leave( ); // 出隊(duì)列 T GetFront( ); // 取隊(duì)頭元素(不刪除) bool isEmpty( ); // 判斷隊(duì)列是否為空 bool isFull( ); // 判斷隊(duì)列是否為滿 }; 3.2.2 隊(duì)頭/尾指針的取值討論=》循環(huán)隊(duì)列 以往的常識(shí):進(jìn)隊(duì)列m_Rear++; 出隊(duì)列m_Front++ 常識(shí)中隱藏了陷阱:假溢出! 循環(huán)隊(duì)列: 進(jìn)隊(duì)列m_Rear =(m_Rear +1)% QueueSize; 出隊(duì)列m_Front=(

36、m_Front+1)% QueueSize; 約定: m_Rear 下一個(gè)進(jìn)隊(duì)列元素的位置 m_Front 隊(duì)列不空時(shí),指向首元素; 隊(duì)列為空時(shí),等于rear 隊(duì)列空時(shí) m_Front==m_Rear 隊(duì)列滿時(shí) (m_Rear+1) % QueueSize==m_Front =》必須浪費(fèi)一個(gè)結(jié)點(diǎn)空間 3.2.3 基本操作 3.2.3.1 構(gòu)造/析構(gòu) template CirQueue::CirQueue( ) { m_Front = m_Rear = 0; } template CirQueu

37、e::~CirQueue( ){ } 3.2.3.2 進(jìn)/出隊(duì)列 // 進(jìn)隊(duì)列 template void CirQueue::Enter(T e) { if((m_Rear+1) % QueueSize==m_Front) throw "上溢"; m_Data[m_Rear] = e; m_Rear = (m_Rear+1) % QueueSize; } // 出隊(duì)列 template T CirQueue::Leave() { if(m_Rear==m

38、_Front) throw "下溢"; T e = m_Data[m_Front]; m_Front = (m_Front+1) % QueueSize; return e; } // 隊(duì)列長(zhǎng)度 template int CirQueue::Length() { return (m_Rear-m_Front+QueueSize)% QueueSize; } 3.2.4 循環(huán)隊(duì)列的其他設(shè)計(jì)方案 方法一:增加成員變量m_Flag (0:非滿,1:非空) 方法二:增加成員變量m_Length(表示隊(duì)列長(zhǎng)度) 4 隊(duì)列的

39、實(shí)例:離散事件的模擬 4.1 逐行打印二項(xiàng)展開(kāi)式(a + b)n的系數(shù)(楊輝三角形) void YANGVI(int n, vector &coefs) { LinkQueue Q; // 整數(shù)隊(duì)列 Q.Enter(1); Q.Enter(1); //第1行 for(int i=2; i<=n; i++) // 逐行計(jì)算 { Q.Enter(1); int e1=Q.Leave(); for(int j=1; j

40、1+e2); e1=e2; } Q.Enter(1); } for(i=0; !Q.isEmpty(); i++) coefs.push_back( Q.Leave() ); } 4.2 最簡(jiǎn)單的排隊(duì)問(wèn)題 某加油站只有一臺(tái)加油機(jī),平均為每輛車加油需要5分鐘,假定一個(gè)小時(shí)內(nèi),有20輛車隨機(jī)進(jìn)入加油站加油,計(jì)算每輛車的平均等待時(shí)間。 // ServiceTime: 每輛車加油需要的時(shí)間 // TotalTime: 總的時(shí)間段 // n: 在TotalTime內(nèi),n輛車隨機(jī)進(jìn)入加油站 // 返回平均等待時(shí)間 float

41、 OilStation(int n,int TotalTime,float ServiceTime) { // 生成模擬數(shù)據(jù) vector ArriveTimes; for(int i=0; i Q; for(i=0; i

42、riveTimes[i]); // 出隊(duì)列,仿佛享受加油站的服務(wù) float BeginOilTime=0, WaitTime=0; while( !Q.isEmpty() ) { float ArriveTime=Q.Leave(); if(BeginOilTime > ArriveTime) WaitTime+=BeginOilTime - ArriveTime; // 需要等待 else BeginOilTime = ArriveTime; // 不需等待 BeginOil

43、Time += ServiceTime; // 加油機(jī)為下輛車加油的時(shí)刻 } return WaitTime/n; } 思考:加油站有二臺(tái)加油機(jī)的情形?有k臺(tái)加油機(jī)的情形? 4.3 稍微復(fù)雜一些的排隊(duì)問(wèn)題 銀行營(yíng)業(yè)所有n種業(yè)務(wù),每類業(yè)務(wù)的服務(wù)時(shí)間是Ti,每種業(yè)務(wù)量是Ki/日。問(wèn)每類業(yè)務(wù)應(yīng)該設(shè)置幾個(gè)服務(wù)窗口? 4.4 優(yōu)先級(jí)隊(duì)列(Priority Queue) 優(yōu)先級(jí):數(shù)據(jù)元素的某個(gè)值。 進(jìn)隊(duì)列:按次序從隊(duì)尾進(jìn)。 出隊(duì)列:取隊(duì)列中優(yōu)先權(quán)最高的元素。 5 棧、隊(duì)列的習(xí)題 5.1 進(jìn)棧出棧的組合問(wèn)題(初級(jí)) ①已知操作次序:

44、push(1); pop(); push(2); push(3); pop(); pop( ); push(4); pop( ); 請(qǐng)寫(xiě)出出棧序列。 ②設(shè)進(jìn)棧次序固定為push(1); push(2); push(3); push(4); 請(qǐng)分析1、2、3、4的24種排列中,哪些序列可以通過(guò)出棧操作實(shí)現(xiàn),哪些不能實(shí)現(xiàn)? 1234 1243 1324 1342 1423 X 1432 2134 2143 2314 2341 2413 X 2431 3124 X 3142 X 3214 3241 3412 X 3421 4123 41

45、32 X 4213 X 4231 X 4312 X 4321 X 5.2 兩個(gè)棧組合一個(gè)隊(duì)列的問(wèn)題 ///////////////////////////////// // 項(xiàng)目路徑:5兩個(gè)鏈棧組合一個(gè)隊(duì)列 ///////////////////////////////// a0,…ai進(jìn)隊(duì)列 a0出隊(duì)列 ai+1,…an-1進(jìn)隊(duì)列 a1,…ai出隊(duì)列 ai+1出隊(duì)列 template class LinkQueue { LinkStack S1,S2; public

46、: LinkQueue( ){ } ~LinkQueue( ){ } void Enter(T e); // 進(jìn)隊(duì)列 T Leave( ); // 出隊(duì)列 }; template void LinkQueue::Enter(T e) // 進(jìn)隊(duì)列 { S1.Push(e); } template T LinkQueue::Leave( ) // 出隊(duì)列 { T e; if( !S2.isEmpty() )

47、 return( S2.Pop() ); while( !S1.isEmpty() ) S2.Push( S1.Pop() ); return( S2.Pop() ); } 5.3 進(jìn)棧出棧的組合問(wèn)題(高級(jí)) 已知進(jìn)棧次序?yàn)?……n,要求窮舉出所有可能的出棧序列。 ///////////////////////////////// // 項(xiàng)目路徑:6棧的棧 ///////////////////////////////// 5.3.1 數(shù)據(jù)結(jié)構(gòu) 小棧 SeqStack s; 特殊的數(shù)據(jù)成員m_Output:儲(chǔ)存出棧序列 大棧 S

48、eqStack > S; 5.3.2 算法思想: 取出大棧中的小棧,進(jìn)行“進(jìn)?!?、“出?!弊兓?,再次進(jìn)棧。當(dāng)某小棧已經(jīng)進(jìn)棧n次、出棧n次時(shí),其中的數(shù)據(jù)成員m_Output就已儲(chǔ)存了一種出棧序列。 5.3.3 算法步驟 ①初始狀態(tài):s.Push(1); S.Push(s); ②當(dāng)大棧不空時(shí),循環(huán)執(zhí)行以下語(yǔ)句: ③大棧出棧,得s=S.Pop(), 記s的進(jìn)棧次數(shù)為k; ④若k==n && s.isEmpty(), 執(zhí)行s.Output(),輸出一種組合序列,轉(zhuǎn)②; ⑤若k

49、若s不空,出棧變化:s2=s,s2出棧,s2進(jìn)大棧; ⑦轉(zhuǎn)② 5.3.4 算法結(jié)果分析 i個(gè)數(shù) 序列個(gè)數(shù) Si 第1段 Ai,1 第2段 Ai,2 第3段 Ai,3 第4段 Ai,4 第5段 Ai,5 第6段 Ai,6 第7段 Ai,7 第8段 Ai,8 第9段 Ai,9 第10段 Ai,10 2 2 1 1 3 5 2 2 1               4 14 5 5 3 1             5 42 14 14 9 4 1           6 132 42 42 28 14 5 1         7 429 132 132 90 48 20 6 1       8 1430 429 429 297 165 75 27 7 1     9 4862 1430 1430 1001 572 275 110 35 8 1   10 16796 4862 4862 3432 2002 1001 429 154 44 9 1 3-25

展開(kāi)閱讀全文
溫馨提示:
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. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!