34數(shù)據(jù)結(jié)構(gòu)作業(yè)_第1頁(yè)
34數(shù)據(jù)結(jié)構(gòu)作業(yè)_第2頁(yè)
34數(shù)據(jù)結(jié)構(gòu)作業(yè)_第3頁(yè)
34數(shù)據(jù)結(jié)構(gòu)作業(yè)_第4頁(yè)
34數(shù)據(jù)結(jié)構(gòu)作業(yè)_第5頁(yè)
已閱讀5頁(yè),還剩18頁(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)介

1、第三章3.5 假設(shè)以S和X分別表示入棧和出棧的操作,則初態(tài)和終態(tài)均為空棧的入棧和出棧的操作序列可以表示為僅由S和X組成的序列。稱可以操作的序列為合法序列(例如,SXSX為合法序列,SXXS為非法序列)。試給出區(qū)分給定序列為合法序列或非法序列的一般準(zhǔn)則,并證明:兩個(gè)不同的合法(棧操作)序列(對(duì)同一輸入序列)不可能得到相同的輸出元素(注意:在此指的是元素實(shí)體,而不是值)序列。解:一般準(zhǔn)則:任何前n個(gè)序列中S的個(gè)數(shù)一定大于或等于X的個(gè)數(shù)且整個(gè)序列中S的個(gè)數(shù)一定等于X的個(gè)數(shù)。證明:設(shè)兩個(gè)合法序列為:T1=SXST2=SXX 假定前n個(gè)操作都相同,從第n+1個(gè)操作開始,為序列不同的起始操作點(diǎn)。由于前n個(gè)

2、操作相同,故此時(shí)兩個(gè)棧(不妨為棧A、B)的存儲(chǔ)情況完全相同,假設(shè)此時(shí)棧頂元素均為a。第n+1個(gè)操作不同,不妨T1的第n+1個(gè)操作為S,T2的第n+1個(gè)操作為X。T1為入棧操作,假設(shè)將b壓棧,則T1的輸出順序一定是先b后a;而T2將a退棧,則其輸出順序一定是先a后b。由于T1的輸出為ba,而T2的輸出順序?yàn)閍b,說(shuō)明兩個(gè)不同的合法棧操作序列的輸出元素的序列一定不同。3.9 試將下列遞推過(guò)程改寫為遞歸過(guò)程。void ditui(int n)int i;i = n;while(i>1)cout<<i-;解:Void digui(int n)if (n=2) printf(“%d”,

3、n);else printf(“%d”,n); digui(n-1); 3.10 試將下列遞歸過(guò)程改寫為非遞歸過(guò)程。void test(int &sum)int x;cin>>x;if(x=0) sum=0;elsetest(sum);sum+=x;cout<<sum;解:void test(int & sum)sqstack s;int x;scanf("%d",&x);initstack(s);while(x!=0)*s.front+=x;scanf("%d",&x);sum=0;int e;p

4、rintf("%d",sum);while(s.front!=s.base)e=*(-s.front);sum+=e;printf("%d",sum);3.15 假設(shè)以順序存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)一個(gè)雙向棧,即在一維數(shù)組的存儲(chǔ)空間中存在著兩個(gè)棧,它們的棧底分別設(shè)在數(shù)組的兩個(gè)端點(diǎn)。試編寫實(shí)現(xiàn)這個(gè)雙向棧tws的三個(gè)操作:初始化inistack(tws)、入棧push(tws,i,x)和出棧pop(tws,i)的算法,其中i為0或1,用以分別指示設(shè)在數(shù)組兩端的兩個(gè)棧,并討論按過(guò)程(正/誤狀態(tài)變量可設(shè)為變參)或函數(shù)設(shè)計(jì)這些操作算法各有什么有缺點(diǎn)。解:程序源代碼:#inclu

5、de<stdio.h>#include<malloc.h>#define STACK_INIT_SIZE 100#define TURE 1#define FALSE 0#define ok 1#define error 0#define INFEASIBLE -1typedef int selemtype ;typedef int status;typedef structint * base2;selemtype * top2; int stacksize;sqstack;status INITstack(sqstack * s)int * p;p=(selemty

6、pe *) malloc (STACK_INIT_SIZE * sizeof(selemtype);(*s).base0=(*s).top0=p;(*s).base1=(*s).top1=p+STACK_INIT_SIZE-1;if(!(*s).base0) exit(-2);if(!(*s).base1) exit(-2);return ok;status Push(sqstack * s,int i,selemtype e)if(i=0)if (*s).top0>=(*s).base0+(STACK_INIT_SIZE/2)-1) return error;else *(*s).to

7、p0+=e;return ok;if(i=1)if(*s).top1<=(*s).base1-(STACK_INIT_SIZE/2)+1) return error;else *(*s).top1-=e;return ok; return error;status Pop(sqstack * s,int i,selemtype * e)if(i=0&&(*s).top0=(*s).base0) return error;if(i=1&&(*s).top1=(*s).base1) return error;if(i=0) *e=*(-(*s).top0);r

8、eturn ok;if(i=1) *e=*(-(*s).top1);return ok;void main()sqstack sta;selemtype e;selemtype * p;int i;if(INITstack(& sta) printf("雙棧已被創(chuàng)建n");printf("請(qǐng)輸入進(jìn)棧端(0/1)及進(jìn)棧元素:n");scanf("%d %d",&i,&e);if(Push(&sta,i,e) printf("元素已入棧n");printf("請(qǐng)輸入進(jìn)棧端(0/

9、1)及進(jìn)棧元素:n");scanf("%d %d",&i,&e);if(Push(&sta,i,e) printf("元素已入棧n");printf("請(qǐng)輸入進(jìn)棧端(0/1)及進(jìn)棧元素:n");scanf("%d %d",&i,&e);if(Push(&sta,i,e) printf("元素已入棧n");printf("左端棧元素:");p=sta.base0;while(sta.top0!=p)printf(&quo

10、t;%d ",*p);p+;printf("右端棧元素:");p=sta.base1;while(sta.top1!=p)printf("%d ",*p);p-;printf("n請(qǐng)輸入出棧端(0/1):n");scanf("%d",&i);if(Pop(&sta,i,&e) printf("n棧頂元素 %d 出棧n",e); printf("左端棧元素:");p=sta.base0;while(sta.top0!=p)printf(&quo

11、t;%d ",*p);p+;printf("右端棧元素:");p=sta.base1;while(sta.top1!=p)printf("%d ",*p);p-;運(yùn)行結(jié)果:3.21 假設(shè)表達(dá)式有單字母變量和雙目四則運(yùn)算符構(gòu)成。試寫一個(gè)算法,將一個(gè)通常書寫形式且書寫正確的表達(dá)式轉(zhuǎn)換為逆波蘭表達(dá)式。解:程序源代碼:#include<stdio.h>#include<malloc.h>#define SIZE 100typedef char selemtype ;typedef structselemtype * base;s

12、elemtype * top;int size; stack;int Prior(char c1,char c2)char ch5="#+-*/"int i=0,j=0;if(c1='(') return 0;while(chi && chi!=c1) i+;if(i=2) i-;/ 加和減可認(rèn)為是同級(jí)別的運(yùn)算符if(i=4) i-;/ 乘和除可認(rèn)為是同級(jí)別的運(yùn)算符while(chj && chj!=c2) j+;if(j=2) j-;if(j=4) j-;if(i>j) return 1;else return 0;v

13、oid main()stack sta;char ch=0,ct;sta.base=(selemtype *)malloc(SIZE*sizeof(selemtype);if(!sta.base ) exit(0);sta.top=sta.base;sta.size=0;*sta.top+='#'printf("please enter the expression:n");while(ch!='#'&&*sta.base='#')ch=getchar();if('a'<=ch&&

14、amp;ch<='z') printf(" %c ",ch);else if(ch='#')ct=*(-sta.top);while(ct!='#')printf(" %c ",ct);ct=*(-sta.top);-sta.top;elseif(ch='(') *sta.top+=ch; else if(ch=')') ct=*(-sta.top);while(ct!='(')printf(" %c ",ct);ct=*(-sta.

15、top); else ct=*(sta.top-1);if(Prior(ct,ch)=0)*sta.top+=ch;elsect=*(-sta.top); while(Prior(ct,ch)printf(" %c ",ct); ct=*(-sta.top);*(+sta.top)=ch;+sta.top; 運(yùn)行結(jié)果:3.22 如題3.21的假設(shè)條件,試寫一個(gè)算法,對(duì)以逆波蘭式表示的表達(dá)式求值。解:程序源代碼:#include<iostream.h>#include<malloc.h>#define max_size_stack 100#define

16、 incre 10#define ok 1#define error -100typedef int elemtype2;typedef int status;typedef structelemtype2 * top;elemtype2 * base;int size;stack2;status initstack2(stack2 & da)da.base=(elemtype2*)malloc(max_size_stack*sizeof(elemtype2);if(!da.base) cout<<"操作失敗,程序執(zhí)行無(wú)效!"<<endl;d

17、a.top=da.base;da.size=max_size_stack;return ok;status pop2(stack2 & da, elemtype2 & e)if(da.base=da.top) return error;e=*(-da.top);return ok;status push2(stack2 & da,elemtype2 e)if(da.top-da.base>=da.size) da.base=(elemtype2 *)realloc(da.base,(da.size+incre)*sizeof(elemtype2);if(!da.b

18、ase) cout<<"操作失敗,程序執(zhí)行無(wú)效!"<<endl;da.top=da.base+da.size;da.size+=incre;*da.top+=e;return ok;int coun(elemtype2 e1,elemtype2 e2,char cch)switch(cch)case '+': return e1+e2;case '-': return e1-e2;case '*': return e1*e2;case '/': if(e2=0) return error

19、;else return e1/e2; case '#': return ok;break;default: return error;void main()char cch;int i,count=0,e1,e2;stack2 da;initstack2(da);cout<<"請(qǐng)輸入表達(dá)式的逆波蘭式:(#表結(jié)束)"<<endl;for(cch='1',i=0;cch!='#'&&i<20;i+)cin>>cch;if(cch!='+'&&

20、;cch!='-'&&cch!='*'&&cch!='/'&&cch!='#')push2(da,cch-48);else if(cch!='#')pop2(da,e2);pop2(da,e1);if(coun(e1,e2,cch)=-100) cout<<"表達(dá)是不合法:"<<endl; cout<<"操作失敗,程序執(zhí)行無(wú)效!"<<endl;elsepush2(da,coun(e

21、1,e2,cch); else pop2(da,e1); cout<<"表達(dá)式的值為:"<<e1<<endl;運(yùn)行結(jié)果:3.14 若以1234作為雙端隊(duì)列的輸入序列,試分別求出滿足以下條件的輸出序列: (1) 能由輸入受限的雙端隊(duì)列得到,但不能由輸出受限的雙端隊(duì)列得到的輸出序列。 (2) 能由輸出受限的雙端隊(duì)列得到,但不能由輸入受限的雙端隊(duì)列得到的輸出序列。(3) 既不能由輸入受限的雙端隊(duì)列得到,也不能由輸出受限的雙端隊(duì)列得到的輸出序列。解:1,2,3,4輸入受限12344和2不可相連1,2,3,4輸出受限121和2不可分開4在1,3或2

22、,3之間由上分析可知:輸出受限不可得到:1243,3412,1342,1432,3142,4132,1324,1423,2143,3421,2341,2431,3241,4231,2314,2413輸入受限不可得到:1243,3241,1423,34213.29 如果希望循環(huán)隊(duì)列中的元素都能得到利用,則需設(shè)置一個(gè)標(biāo)志域tag,并以tag的值為0和1來(lái)區(qū)分,尾指針和頭指針值相同時(shí)的隊(duì)列狀態(tài)是“空”還是“滿”。試編寫與此結(jié)構(gòu)相應(yīng)的入隊(duì)列和出隊(duì)列的算法,并從時(shí)間和空間角度討論設(shè)標(biāo)志和不設(shè)標(biāo)志這兩種方法的使用范圍(如當(dāng)循環(huán)隊(duì)列容量較小而隊(duì)列中每個(gè)元素占的空間較多時(shí),哪一種方法較好)。解:程序源代碼:#

23、include<iostream.h>#include<stdlib.h> #define maxqsize 5#define ok 1#define error 0typedef int qelemtype;typedef int status;typedef structqelemtype * base;int front;int rear;int tag;squeue;status initqueue(squeue & sq)sq.base=(qelemtype*)malloc(maxqsize*sizeof(qelemtype);if(!sq.base)

24、 exit(-2);sq.front=sq.rear=0;sq.tag=0;return ok;status enqueue(squeue & sq,qelemtype e)if(sq.rear=sq.front&&sq.tag) return error;sq.basesq.rear=e;sq.rear=(sq.rear+1)%maxqsize;if(sq.rear=sq.front) sq.tag=1;return ok;status dequeue(squeue & sq,qelemtype & e)if(sq.rear=sq.front&

25、&!sq.tag) return error;e=sq.basesq.front;sq.front=(sq.front+1)%maxqsize;if(sq.tag=1) sq.tag=0;return ok;void main()squeue sq;qelemtype e;int i;initqueue(sq);cout<<"請(qǐng)輸入隊(duì)列元素:"<<endl;cin>>e;if(enqueue(sq,e) cout<<"元素已插入"<<endl;cout<<"請(qǐng)輸入隊(duì)

26、列元素:"<<endl;cin>>e;if(enqueue(sq,e) cout<<"元素已插入"<<endl;cout<<"請(qǐng)輸入隊(duì)列元素:"<<endl;cin>>e;if(enqueue(sq,e) cout<<"元素已插入"<<endl;if(dequeue(sq,e) cout<<"隊(duì)頭元素:"<<e<<"已刪除"<<en

27、dl;cout<<"隊(duì)列中元素為:"<<endl;for(;dequeue(sq,e);)cout<<e<<" "cout<<endl;運(yùn)行結(jié)果:3.30 假設(shè)將循環(huán)隊(duì)列定義為:以域變量rear和length分別指示循環(huán)隊(duì)列中隊(duì)尾元素的位置和內(nèi)含元素的個(gè)數(shù)。試給出此循環(huán)隊(duì)列的隊(duì)滿條件,并寫出相應(yīng)的入隊(duì)列和出隊(duì)列的算法(在出隊(duì)列的算法中要返回隊(duì)頭元素)。解:程序源代碼:#include<iostream.h>#include<stdlib.h>#define max 3#d

28、efine ok 1#define error 0typedef int status;typedef int selemtype;typedef structselemtype * base;int rear;int length;squeue;status initqueue(squeue & sq)sq.base=(selemtype *)malloc(max*sizeof(selemtype);if(!sq.base) exit(-2);sq.rear=0;sq.length=0;return ok;status enqueue(squeue & sq,selemtyp

29、e e)if(sq.length>=max) return error;sq.basesq.rear=e;sq.rear=(sq.rear+1)%max;sq.length+;return ok;status dequeue(squeue & sq,selemtype & e)if(sq.length<=0) return error;e=sq.base(sq.rear+max-sq.length)%max;sq.length-;return ok;void main()squeue sq;selemtype e;initqueue(sq);cout<<

30、"請(qǐng)輸入隊(duì)列元素:"<<endl;cin>>e;if(enqueue(sq,e) cout<<"元素已插入"<<endl;else cout<<"隊(duì)列已滿元素未被插入"<<endl;cout<<"請(qǐng)輸入隊(duì)列元素:"<<endl;cin>>e;if(enqueue(sq,e) cout<<"元素已插入"<<endl;else cout<<"隊(duì)列已

31、滿元素未被插入"<<endl;cout<<"請(qǐng)輸入隊(duì)列元素:"<<endl;cin>>e;if(enqueue(sq,e) cout<<"元素已插入"<<endl;else cout<<"隊(duì)列已滿元素未被插入"<<endl;cout<<"請(qǐng)輸入隊(duì)列元素:"<<endl;cin>>e;if(enqueue(sq,e) cout<<"元素已插入"&

32、lt;<endl;else cout<<"隊(duì)列已滿元素未被插入"<<endl;if(dequeue(sq,e) cout<<"隊(duì)頭元素:"<<e<<"已刪除"<<endl;cout<<"隊(duì)列中元素為:"<<endl;for(;dequeue(sq,e);)cout<<e<<" "cout<<endl;運(yùn)行結(jié)果:3.31 假設(shè)稱正讀和反讀都相同的字符序列為“回文

33、”,例如,abba和abcba是回文,abcde和ababab則不是回文。試寫一個(gè)算法判別讀入的一個(gè)以為結(jié)束符的字符序列是否是“回文”。解:程序源代碼:#include<iostream.h>#include<stdlib.h>#define max 10typedef char elemtype;typedef structelemtype * base;int front;int rear;squeue;void main()squeue sq;char e1=0,e2=0,ch;int i,n;sq.base=(elemtype *)malloc(max*size

34、of(elemtype);sq.front=sq.rear=0;cout<<"請(qǐng)輸入字符序列:"<<endl;while(ch!=''&&(sq.rear+1)%max!=sq.front)cin>>ch;sq.basesq.rear=ch;sq.rear=(sq.rear+1)%max;if(sq.basesq.rear-1='') sq.rear-;if(sq.rear+1)%max=sq.front)cout<<"隊(duì)列已滿"<<endl;n=

35、(sq.rear-sq.front+1);for(i=1;i<=n/2&&e1=e2;i+)e1=sq.basesq.front+i-1;e2=sq.basesq.rear-i;if(i>=n/2&&e1=e2) cout<<"該字符序列為回文"<<endl;else cout<<"該字符序列不為回文"<<endl;運(yùn)行結(jié)果:3.34 假設(shè)在如教科書節(jié)中圖3.9所示的鐵道轉(zhuǎn)軌網(wǎng)的輸入端有n節(jié)車廂:硬座、硬臥和軟臥(分別以P,H和S表示)等待調(diào)度,要求這三種車廂在輸

36、出端鐵道上的排列次序?yàn)椋河沧谇埃浥P在中,硬臥在后。試?yán)幂敵鍪芟薜碾p端隊(duì)列對(duì)這n節(jié)車廂進(jìn)行調(diào)度,編寫算法輸出調(diào)度的操作序列:分別以字符E和D表示對(duì)雙端隊(duì)列的頭端進(jìn)行入隊(duì)列和出隊(duì)列的操作;以字符A表示對(duì)雙端隊(duì)列的尾端進(jìn)行入隊(duì)列的操作。解:程序源代碼:#include<iostream.h>#include<stdlib.h>#define max 10#define ok 1#define error 0typedef int status;typedef int elemtype;typedef structelemtype * base;int front ;in

37、t rear ;int tag;xqueue;status initqueue(xqueue & sq)sq.base=(elemtype *)malloc(max *sizeof(elemtype);if(!sq.base) exit(-2);sq.front=sq.rear=0;sq.tag=0;return ok;status enqueue(xqueue & sq,elemtype e)elemtype a;if(sq.front=sq.rear&&sq.tag) return error;if(sq.front=sq.rear&&!sq

38、.tag) sq.basesq.rear=e;sq.rear=(sq.rear+1)%max;if(sq.front=sq.rear) sq.tag=1;elsea=(sq.basesq.front+sq.base(sq.rear+max-1)%max)/2;if(e>=a)sq.basesq.rear=e;sq.rear=(sq.rear+1)%max;if(sq.front=sq.rear) sq.tag=1;elsesq.base(sq.front+max-1)%max=e;sq.front=(sq.front+max-1)%max;if(sq.front=sq.rear) sq.

39、tag=1;return ok;status dequeue(xqueue & sq,elemtype & e)if(sq.front=sq.rear&&!sq.tag) return error;elsee=sq.basesq.front;sq.front=(sq.front+1+max)%max;sq.tag=0;return ok;void main() xqueue sq;elemtype e;initqueue(sq);cout<<"請(qǐng)輸入作業(yè)預(yù)計(jì)時(shí)間:"<<endl;cin>>e;if(enqu

40、eue(sq,e) cout<<"元素已插入"<<endl;else cout<<"隊(duì)列已滿元素未被插入"<<endl;cout<<"請(qǐng)輸入作業(yè)預(yù)計(jì)時(shí)間:"<<endl;cin>>e;if(enqueue(sq,e) cout<<"元素已插入"<<endl;else cout<<"隊(duì)列已滿元素未被插入"<<endl;cout<<"請(qǐng)輸入作業(yè)預(yù)計(jì)

41、時(shí)間:"<<endl;cin>>e;if(enqueue(sq,e) cout<<"元素已插入"<<endl;else cout<<"隊(duì)列已滿元素未被插入"<<endl;cout<<"請(qǐng)輸入作業(yè)預(yù)計(jì)時(shí)間:"<<endl;cin>>e;if(enqueue(sq,e) cout<<"元素已插入"<<endl;else cout<<"隊(duì)列已滿元素未被插入&q

42、uot;<<endl;if(dequeue(sq,e) cout<<"隊(duì)頭元素:"<<e<<"已刪除"<<endl;cout<<"隊(duì)列中元素為:"<<endl;for(;dequeue(sq,e);)cout<<e<<" "cout<<endl;運(yùn)行結(jié)果:3.34 假設(shè)在如教科書節(jié)中圖3.9所示的鐵道轉(zhuǎn)軌網(wǎng)的輸入端有n節(jié)車廂:硬座、硬臥和軟臥(分別以P,H和S表示)等待調(diào)度,要求這三種車廂在輸出端

43、鐵道上的排列次序?yàn)椋河沧谇?,軟臥在中,硬臥在后。試?yán)幂敵鍪芟薜碾p端隊(duì)列對(duì)這n節(jié)車廂進(jìn)行調(diào)度,編寫算法輸出調(diào)度的操作序列:分別以字符E和D表示對(duì)雙端隊(duì)列的頭端進(jìn)行入隊(duì)列和出隊(duì)列的操作;以字符A表示對(duì)雙端隊(duì)列的尾端進(jìn)行入隊(duì)列的操作。解:程序源代碼:#include<iostream.h>#include<stdlib.h>#define max 10#define ok 1#define error 0typedef int status;typedef char elemtype;typedef structelemtype * base;int front ;int

44、 rear ;int tag;xqueue;status initqueue(xqueue & sq)sq.base=(elemtype *)malloc(max *sizeof(elemtype);if(!sq.base) exit(-2);sq.front=sq.rear=0;sq.tag=0;return ok;status enqueuerear(xqueue & sq,elemtype e)if(sq.front=sq.rear&&sq.tag) return error;sq.basesq.rear=e;sq.rear=(sq.rear+1)%max

45、;if(sq.front=sq.rear) sq.tag=1;return ok;status enqueuetop(xqueue & sq,elemtype e)if(sq.front=sq.rear&&sq.tag) return error;sq.base(sq.front-1+max)%max=e;sq.front=(sq.front-1+max)%max;if(sq.front=sq.rear) sq.tag=1;return ok;status dequeue(xqueue & sq,elemtype & e)if(sq.front=sq.r

46、ear&&!sq.tag) return error;elsee=sq.basesq.front;sq.front=(sq.front+1+max)%max;sq.tag=0;return ok;status empty(xqueue sq)if(sq.front=sq.rear&&!sq.tag) return ok;else return error;status gettop(xqueue sq,elemtype & e)if(empty(sq) return error;e=sq.basesq.front;return ok;void main(

47、) xqueue sq;elemtype e;char ch25,cch;int i,n;initqueue(sq);cout<<"請(qǐng)輸入車廂節(jié)數(shù):"<<endl;cin>>n;cout<<"請(qǐng)輸入車廂次序:"<<endl;for(i=1;i<=n;i+)cin>>cch;chi-1=cch; for(i=1;i<=n;i+)if(empty(sq) enqueuetop(sq,chi-1);cout<<" E "else if(chi-1

48、='H') enqueuerear(sq,chi-1);cout<<" A "if(chi-1='P') enqueuetop(sq,chi-1);cout<<" E "if(chi-1='S') gettop(sq,e);if(e='S')enqueuetop(sq,chi-1);cout<<" E "elsewhile(e='P')dequeue(sq,e);cout<<" D " g

49、ettop(sq,e);enqueuetop(sq,chi-1);cout<<" E "if(!empty(sq) for(;dequeue(sq,e);)cout<<" D "cout<<endl;運(yùn)行結(jié)果:第四章4.11編寫算法,求得所有包含在串s中而不包含在串t中的字符(s中重復(fù)的字符只選一個(gè))構(gòu)成的新串r,以及r中每個(gè)字符在s中第一次出現(xiàn)的位置。解:程序源代碼:#include<iostream.h>#include<stdlib.h>#include<malloc.h>#d

50、efine ok 1typedef int status;typedef structchar * ch;int * pos;int length;string;status strassign(string & r,char * chars)int i,j,k;char * c,* cc;if(r.ch) free(r.ch);i=0;c=chars;while(*c)if(*c!='*')i+;c+;c+;if(!i)r.ch=0;r.pos=0;elseif(!(r.ch=(char *)malloc(i*sizeof(char)exit(-2);if(!(r.p

51、os=(int *)malloc(i*sizeof(int)exit(-2);j=k=i=1;c=chars;cc=r.ch;while(cj-1)if(cj-1!='*')cci-1=cj-1;r.posk-1=j-1;i+;k+;r.length+;j+;return ok;void main()int i,j,m,n;string r=0,0,0;char s20,t20;cout<<"請(qǐng)輸入串s:"<<endl;cin>>s;cout<<"請(qǐng)輸入串t:"<<endl;cin>>t;for(n=0;sn;n+);for(m=0;tm;m+);for(i=1;i<=n;i+)if(si-1!='*')for(j=i+1;j<=n;j+)if(si-1=sj-1) sj-

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論