《习题课(栈队列串数组).ppt》由会员分享,可在线阅读,更多相关《习题课(栈队列串数组).ppt(25页珍藏版)》请在三一办公上搜索。
1、习题3.15 const int StackSize=500;typedef structSElemtype*base;int top0,top1;TwoStack;/双向栈类型 Status InitStack(TwoStack,Status push(TwoStack,Status pop(TwoStack,习题3.18 Status Ex3_18(char*str)/判别表达式中的小括号是否匹配 count=0;for(p=str;p;p+)if(*p=()count+;else if(*p=)count-;if(count0)return ERROR;/避免).(假匹配if(count
2、)return ERROR;/注意括号不匹配的两种情况return OK;,习题3.19 Status Ex3_19(SqList str)/判别表达式中三种括号是否匹配InitStack(S);for(i=0;istr.length;i+)if(str.elemi=(|str.elemi=|str.elemi=)Push(S,str.elemi);else if(str.elemi=)|str.elemi=|str.elemi=)if(StackEmpty(S)return ERROR;Pop(S,c);if(str.elemi=),习题3.28 void InitCiQueue(CiQue
3、ue/修改尾指针,Status DeCiQueue(CiQueue/DeCiQueue,习题3.29 Status EnCyQueue(CyQueue/队列满/EnCyQueue,Status DeCyQueue(CyQueue/DeCyQueue分析:当循环队列容量较小而队列中每个元素占的空间较多时,此种表示方法可以节约较多的存储空间,较有价值.,习题3.30 Status EnCyQueue(CyQueue/EnCyQueue,Status DeCyQueue(CyQueue/DeCyQueue,习题4.25 void HString_Replace(HString,else/新子串长度小
4、于原子串时:先将后部左移for(m=i+V.length;mS.length+V.length-T.length;m+)S.chm=S.chm-V.length+T.length;for(m=0;mV.length;m+)S.chi+m=V.chm;S.length+=V.length-T.length;i+=V.length;/if else i+;/while,习题4.61.SubString(s1,s,3,1)/s1=“Y”2.SubString(s2,s,6,1)/s2=“+”3.SubString(s3,s,7,1)/s3=“*”4.Replace(s,s1,s2)/s=“(X+Z)
5、+*”5.SubString(t1,s,1,5)/t1=“(X+Z)”6.Concat(t2,t1,s3)/t2=“(X+Z)*”7.Concat(t,t2,s1)/t=“(X+Z)*Y”,习题4.8 A DABBA DADAnext 0 1 1 2 1 1 2 3 4 3nextval 0 1 0 2 1 0 1 0 4 0,习题4.81.主串:ADBADABBAABADABBADADA 模式:ADA nextval3=02.主串:ADBADABBAABADABBADADA 模式:ADABBAD nextval7=13.主串:ADBADABBAABADABBADADA模式:AD nextva
6、l2=1 4.主串:ADBADABBAABADABBADADA 模式:A nextval1=05.主串:ADBADABBAABADABBADADA 模式:ADABBADADA,习题4.28void Ex4_28(LString/while,习题5.17(1)int max(SqList L,int n)int t;if(n=1)return(L.elem0);else t=max(L,n-1);if(tL.elemn-1)return(t);else return(L.elemn-1);,习题5.17(2)int min(SqList L,int n)int t;if(n=1)return(L
7、.elem0);else t=min(L,n-1);if(tL.elemn-1)return(t);else return(L.elemn-1);,习题5.17(3)(4)int sum(SqList L,int n)if(n=1)return(L.elem0);else return(sum(L,n-1)+L.elemn-1);int product(SqList L,int n)if(n=1)return(L.elem0);else return(product(L,n-1)*L.elemn-1);,习题5.17(5)float average(SqList L,int n)if(n=1)
8、return(L.elem0);else return(average(L,n-1)*(n-1)+L.elemn-1)/n);,习题5.19 void Ex5_19(int Amn)/求矩阵A中的马鞍点 int flag=0;for(i=0;imaxj)maxj=Aij;,for(i=0;im;i+)/判定是否为马鞍点 for(j=0;jn;j+)if(mini=maxj)printf(“马鞍点为:A%d%d=%dn,i,j,Aij);flag=1;if(!flag)printf(“没有马鞍点n”);,习题5.24 typedef structint seq;/该元素在以行为主序排列时的序号int e;Triple;typedef struct Triple dataMAXSIZE+1;int nu,tu;TSMatrix;/单下标二元组矩阵类型,Status Ex5_24(TSMatrix A,int i,int j,int,