freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

數(shù)據(jù)結(jié)構(gòu)的c語(yǔ)言算法(編輯修改稿)

2024-07-14 06:58 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 urn 0。 } else { sttop++。 stdata[sttop]=x。 return 1。 }}int pop(stack *st,elemtype *x)/*退棧*/{ if(sttop==0) { printf(棧下溢出\n)。 return 0。 } else { *x=stdata[sttop]。 sttop。 return 1。 }}int empty(stack *st)/*判斷???/{ if(sttop==0) return 1。 else return 0。}int gettop(stack *st,elemtype *x)/*獲取棧頂元素*/{ if(sttop==0) { printf(棧下溢出\n)。 return 0。 } else { *x=stdata[sttop]。 return 1。 }}void disp(stack *st)/*輸出棧的所有元素*/{ int i。 for(i=sttop。i0。i) printf(%d ,stdata[i])。 printf(\n)。}/**//*假設(shè)一個(gè)算術(shù)表達(dá)式中可以包含三種括號(hào),圓括號(hào)(和)、方括號(hào)[和]和花括號(hào){和},且這三種括號(hào)可按任意的次序嵌套使用(如:..[..{..}..[..]..]..[..]..(..)..).編寫(xiě)判別給定表達(dá)式中所含括號(hào)是否正確配對(duì)出現(xiàn)的算法(已知表達(dá)式已存入數(shù)據(jù)元素為字符的順序表中*//*輸入:{a+[b+(c+d)+e]+f}*/includeincludeint correct(char *str){ stack st。 char x。 int i,ok=1。 init(amp。st)。 for(i=0。str[i]!=39。\039。i++) { switch(str[i]) { case39。(39。:push(amp。st,39。(39。)。break。 case39。[39。:push(amp。st,39。[39。)。break。 case39。{39。:push(amp。st,39。{39。)。break。 case39。)39。:if(!(pop(amp。st,amp。x)amp。amp。x==39。(39。)) ok=0。break。 case39。]39。:if(!(pop(amp。st,amp。x)amp。amp。x==39。[39。)) ok=0。break。 case39。}39。:if(!(pop(amp。st,amp。x)amp。amp。x==39。{39。)) ok=0。break。 } if(!ok) break。 } if(empty(amp。st)amp。amp。ok) return 1。 else return 0。}void main(){ char *str。 str=(char*)malloc(100*sizeof(char))。 printf(str: )。 scanf(%s,str)。 if(correct(str)) printf(表達(dá)式括號(hào)匹配\n)。 else printf(表達(dá)式括號(hào)不匹配\n)。 getch()。}includedefine MaxLen 100int trans(char str[],char exp[]){ int st[MaxLen]。/*作為棧使用*/ char ch。 int i=0,t=0,top=1。/*t作為exp的下標(biāo),top作為st的下標(biāo),i作為str的下標(biāo)*/ while((ch=str[i++])!=39。\039。) { if(ch=39。039。 amp。amp。 ch=39。939。)/*判斷為數(shù)字*/ { exp[t]=ch。t++。 while ((ch=str[i++])!=39。\039。 amp。amp。 ch=39。039。 amp。amp。 ch=39。939。) { exp[t]=ch。t++。 } i。 exp[t]=39。39。t++。 } else if(ch==39。(39。)/*判斷為左括號(hào)*/ { top++。st[top]=ch。 } else if(ch==39。)39。)/*判斷為右括號(hào)*/ { while(st[top]!=39。(39。) { exp[t]=st[top]。top。t++。 } top。 } else if(ch==39。+39。||ch==39。39。)/*判斷為加減號(hào)*/ { while(top=0 amp。amp。 st[top]!=39。(39。) { exp[t]=st[top]。top。t++。 } top++。st[top]=ch。 } else if(ch==39。*39。||ch==39。/39。) { while (st[top]==39。*39。 || st[top]==39。/39。) { exp[t]=st[top]。top。t++。 } top++。st[top]=ch。 } } while(top=0) { exp[t]=st[top]。t++。top。 } exp[t]=39。\039。 return 1。}int pvalue(char exp[],int *n){ int st[MaxLen],d。/*作為棧使用*/ char ch。 int t=0,top=1。/*t作為exp的下標(biāo),top作為st的下標(biāo)*/ while ((ch=exp[t+1])!=39。\039。) { if(ch=39。039。 amp。amp。 ch=39。939。)/*為數(shù)字字符時(shí)轉(zhuǎn)換為數(shù)字*/ { d=0。 do { d=10*d+ch39。039。 }while((ch=exp[t++])!=39。39。)。 top++。st[top]=d。/*數(shù)字進(jìn)棧*/ } else /*為運(yùn)算符時(shí),計(jì)算并退棧*/ { switch(ch) { case39。+39。:st[top1]=st[top1]+st[top]。break。 case39。39。:st[top1]=st[top1]st[top]。break。 case39。*39。:st[top1]=st[top1]*st[top]。break。 case39。/39。:if(st[top]!=0) st[top1]=st[top1]/st[top]。 else return 0。/*除0錯(cuò)誤*/ break。 } top。 } } (*n)=st[top]。 return 1。}void main(){ char str[MaxLen]。/*存儲(chǔ)原算術(shù)表達(dá)式*/ char exp[MaxLen]。/*存儲(chǔ)轉(zhuǎn)換成的波蘭表達(dá)式*/ int n。 printf(算術(shù)表達(dá)式: )。 scanf(%s,amp。str)。 if(trans(str,exp)==0) printf(原算術(shù)表達(dá)式不正確\n)。 else { printf(波蘭表達(dá)式: %d\n,exp)。 if(pvalue(exp,amp。n)==1) printf(計(jì)算結(jié)果: %d\n,n)。 else printf(計(jì)算錯(cuò)誤\n)。 }}/*已知Ackerman函數(shù)的定義如下:Akm(m,n)=n+1(m=0),akm(m1,1)(m!=0,n=0) akm(m1),akm(m,n1))(m!=0,n!=0);2。寫(xiě)出非遞歸算法;3。根據(jù)非遞歸算法,畫(huà)出求akm(2,1)時(shí)棧的變化過(guò)程*/includedefine MaxLen 5000/*此數(shù)應(yīng)足夠大,因?yàn)閙和n值的較小增長(zhǎng)會(huì)引起函數(shù)值的極快增長(zhǎng),用的棧的空間也很大*/int f1(int m,int n){ if(m==0) return n+1。 else if(n==0) return f1(m1,1)。 else return f1(m1,f1(m,n1))。}int no(int m,int n){ if(m==0) return 1。 else if(n==0) return 2。 else return 3。}int f2(int m,int n){ int st[MaxLen][4],top=1,m1,n1。 st[top][0]=no(m,n)。 st[top][1]=0。/*初值0進(jìn)棧*/ st[top][2]=m。/*初值m進(jìn)棧*/ st[top][3]=n。/*初值n進(jìn)棧*/ do /*開(kāi)始循環(huán)*/ { if(st[top][1]==0) { if(st[top][0]==3) { top++。 st[top][1]=0。 st[top][2]=st[top1][2]。 st[top][3]=st[top1][3]1。 st[top][0]=no(st[top][2],st[top][3])。 } else if(st[top][0]==2) { top++。 st[top][1]=0。 st[top][2]=st[top1][2]1。 st[top][3]=1。 st[top][0]=no(st[top][2],st[top][3])。 } if(st[top][0]==1) st[top][1]=st[top][3]+1。 } if(top=1amp。amp。st[top][1]!=0amp。amp。st[top1][0]==2) { st[top1][1]=st[top][1]。 top。 } else if(top=1amp。amp。st[top][1]!=0amp。amp。st[top1][0]==3) { n1=st[top][1]。 m1=st[top1][2]1。 top。 st[top][1]=0。 st[top][2]=m1。 st[top][3]=n1。 st[top][0]=no(st[top][2],st[top][3])。 } if(top==1amp。amp。st[top][1]!=0)/*棧中已有一個(gè)元素,且已計(jì)算出值,則退出循環(huán)*/ break。 }while(top=1)。 return (st[1][1])。}void main(){ int n,m。 printf(input m n:)。 scanf(%d %d,amp。m,amp。n)。 printf(digui c(%d,%d)=%d\n,m,n,f1(m,n))。 printf(feidigui c(%d,%d)=%d\n,m,n,f2(m,n))。 system(pause)。}/*輸入:3 8回車(chē)digui c(3,8)=2045feidigui c(3,8)=2045*//*假設(shè)以帶頭結(jié)點(diǎn)的循環(huán)鏈表表示隊(duì)列,并且只設(shè)一個(gè)指針指向隊(duì)尾結(jié)點(diǎn)(注意不設(shè)頭指針),試編寫(xiě)相應(yīng)的隊(duì)列初始化、入隊(duì)列和出隊(duì)列的算法*/includedefine MaxSize 6typedef char queue[MaxSize]。int rear=0,len=0。/*隊(duì)列初態(tài)*/int enqueue(queue qu,char x){ if(len==MaxSize)/*隊(duì)滿,上溢出*/ return 0。 else { rear=(rear+1)%MaxSize。 qu[rear]=x。 len++。/*隊(duì)列長(zhǎng)度增1*/ return 1。 }}int dequeue(queue qu,char *x){ int front。 if(len==0)/*隊(duì)列為空時(shí)下溢出*/ return 0。 else { front=(rearlen+1+MaxSize)%MaxSize。 *x=qu[front]。 len。/*隊(duì)列長(zhǎng)度減1*/ return 1。 }}void main(){ char x。 queue qu。 printf(a入隊(duì)\n)。 enqueue(qu,39。a39。)。 printf(b入隊(duì)\n)。 enqueue(qu,39。b39。)。 printf(c入隊(duì)\n)。 en
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1