5. ÊÔдһ¸öËã·¨£¬ÅжÏÒÀ´Î¶ÁÈëµÄÒ»¸öÒÔ@Ϊ½áÊø·ûµÄ×ÖĸÐòÁУ¬ÊÇ·ñΪÐÎÈç?ÐòÁÐ1 & ÐòÁÐ2?ģʽµÄ×Ö·ûÐòÁС£ÆäÖÐÐòÁÐ1ºÍÐòÁÐ2 Öж¼²»º¬×Ö·û?&?£¬ÇÒÐòÁÐ2 ÊÇÐòÁÐ1µÄÄæÐòÁС£ÀýÈ磬?a+b&b+a?ÊÇÊô¸ÃģʽµÄ×Ö·ûÐòÁУ¬¶ø?£±+£³&£³££±?Ôò²»ÊÇ¡£ [Ìáʾ]£º
£¨1£© ±ß¶Á±ßÈëÕ»£¬Ö±µ½&
£¨2£© ±ß¶Á±ß³öÕ»±ß±È½Ï£¬Ö±µ½¡¡
int IsReverse()//ÅжÏÊäÈëµÄ×Ö·û´®ÖÐ'&'ǰºÍ'&'ºó²¿·ÖÊÇ·ñÎªÄæ´®,ÊÇÔò·µ»Ø1,·ñÔò·µ»Ø0 {
InitStack(s);
while((e=getchar())!='&') push(s,e);
while((e=getchar())!='@') {
if(StackEmpty(s)) return 0; pop(s,c);
if(e!=c) return 0; }
if(!StackEmpty(s)) return 0; return 1; }//IsReverse
6. ¼ÙÉè±í´ïʽÓɵ¥×Öĸ±äÁ¿ºÍ˫ĿËÄÔòÔËËãËã·û¹¹³É¡£ÊÔдһ¸öËã·¨£¬½«Ò»¸öͨ³£ÊéдÐÎʽ£¨ÖÐ׺£©ÇÒÊéдÕýÈ·µÄ±í´ïʽת»»ÎªÄ沨À¼Ê½£¨ºó׺£©¡£
void NiBoLan(char *str,char *new)//°ÑÖÐ׺±í´ïʽstrת»»³ÉÄæ²¨À¼Ê½new {
p=str;q=new; //Ϊ·½±ãÆð¼û,ÉèstrµÄÁ½¶Ë¶¼¼ÓÉÏÁËÓÅÏȼ¶×îµÍµÄÌØÊâ·ûºÅ InitStack(s); //sΪÔËËã·ûÕ» while(*p) {
if(*pÊÇ×Öĸ)) *q++=*p; //Ö±½ÓÊä³ö else {
c=gettop(s);
if(*pÓÅÏȼ¶±Èc¸ß) push(s,*p); else {
while(gettop(s)ÓÅÏȼ¶²»±È*pµÍ) {
pop(s,c);*(q++)=c; }//while
push(s,*p); //ÔËËã·ûÔÚÕ»ÄÚ×ñÑÔ½ÍùÕ»¶¥ÓÅÏȼ¶Ô½¸ßµÄÔÔò }//else
}//else p++; }//while
}//NiBoLan //²Î¼û±àÒëÔÀí½Ì²Ä
7. ¼ÙÉèÒÔ´øÍ·½áµãµÄÑ»·Á´±í±íʾ¶ÓÁУ¬²¢ÇÒÖ»ÉèÒ»¸öÖ¸ÕëÖ¸Ïò¶ÓÎ²ÔªËØ½áµã£¨×¢Òâ²»ÉèÍ·Ö¸Õ룩£¬ÊÔ±àдÏàÓ¦µÄ¶ÓÁгõʼ»¯¡¢Èë¶ÓÁкͳö¶ÓÁеÄËã·¨¡£ void InitCiQueue(CiQueue &Q)//³õʼ»¯Ñ»·Á´±í±íʾµÄ¶ÓÁÐQ {
Q=(CiLNode*)malloc(sizeof(CiLNode)); Q->next=Q; }//InitCiQueue
void EnCiQueue(CiQueue &Q,int x)//°ÑÔªËØx²åÈëÑ»·Á´±í±íʾµÄ¶ÓÁÐQ,QÖ¸Ïò¶ÓÎ²ÔªËØ,Q->nextÖ¸ÏòÍ·½áµã,Q->next->nextÖ¸Ïò¶ÓÍ·ÔªËØ {
p=(CiLNode*)malloc(sizeof(CiLNode)); p->data=x;
p->next=Q->next; //Ö±½Ó°Ñp¼ÓÔÚQµÄºóÃæ Q->next=p;
Q=p; //ÐÞ¸ÄβָÕë }
Status DeCiQueue(CiQueue &Q,int x)//´ÓÑ»·Á´±í±íʾµÄ¶ÓÁÐQÍ·²¿É¾³ýÔªËØx {
if(Q==Q->next) return INFEASIBLE; //¶ÓÁÐÒÑ¿Õ p=Q->next->next; x=p->data;
Q->next->next=p->next; free(p); return OK; }//DeCiQueue
8. ÒªÇóÑ»·¶ÓÁв»Ëðʧһ¸ö¿Õ¼äÈ«²¿¶¼Äܵõ½ÀûÓÃ, ÉèÖÃÒ»¸ö±êÖ¾Óòtag , ÒÔtagΪ0»ò1À´Çø·ÖͷβָÕëÏàͬʱµÄ¶ÓÁÐ״̬µÄ¿ÕÓëÂú£¬Çë±àдÓë´Ë½á¹¹ÏàÓ¦µÄÈë¶ÓÓë³ö¶ÓËã·¨¡£ [Ìáʾ]£º
³õʼ״̬£ºfront==0, rear==0, tag==0 ¶Ó¿ÕÌõ¼þ£ºfront==rear, tag==0 ¶ÓÂúÌõ¼þ£ºfront==rear, tag==1
ÆäËü״̬£ºfront !=rear, tag==0£¨»ò1¡¢2£©
Èë¶Ó²Ù×÷£º ¡
¡£¨Èë¶Ó£©
if (front==rear) tag=1£»£¨»òÖ±½Ótag=1£©
³ö¶Ó²Ù×÷£º
¡
¡£¨³ö¶Ó£© tag=0£»
[ÎÊÌâ]£ºÈçºÎÃ÷È·Çø·Ö¶Ó¿Õ¡¢¶ÓÂú¡¢·Ç¿Õ·ÇÂúÈýÖÖÇé¿ö£¿
9. ¼òÊöÒÔÏÂËã·¨µÄ¹¦ÄÜ£¨ÆäÖÐÕ»ºÍ¶ÓÁеÄÔªËØÀàÐ;ùΪint£©£º £¨1£©void proc_1(Stack S) { int i, n, A[255]; n=0;
while(!EmptyStack(S))
{n++; Pop(&S, &A[n]);} for(i=1; i<=n; i++) Push(&S, A[i]); }
½«Õ»SÄæÐò¡£
£¨2£©void proc_2(Stack S, int e) { Stack T; int d; InitStack(&T);
while(!EmptyStack(S)) { Pop(&S, &d);
if (d!=e) Push( &T, d); }
while(!EmptyStack(T)) { Pop(&T, &d); Push( &S, d); } }
ɾ³ýÕ»SÖÐËùÓеÈÓÚeµÄÔªËØ¡£ £¨3£©void proc_3(Queue *Q) { Stack S; int d; InitStack(&S);
while(!EmptyQueue(*Q)) {
DeleteQueue(Q, &d); Push( &S, d); }
while(!EmptyStack(S)) { Pop(&S, &d); EnterQueue(Q£¬d) } }
½«¶ÓÁÐQÄæÐò¡£ µÚËÄÕ ´®
1. Éès=?I AM A STUDENT?, t=?GOOD?, q=?WORKER?¡£¸ø³öÏÂÁвÙ×÷µÄ½á¹û£º StrLength(s); SubString(sub1,s,1,7); SubString(sub2,s,7,1); StrIndex(s,?A?,4); StrReplace(s,?STUDENT?,q); StrCat(StrCat(sub1,t), StrCat(sub2,q)); [²Î¿¼´ð°¸]
StrLength(s)=14;
SubString(sub1,s,1,7) sub1=?I AM A ?; SubString(sub2,s,7,1) sub2=? ?; StrIndex(s,4,?A?)=6;
StrReplace(s,?STUDENT?,q); s=?I AM A WORKER?;
StrCat(StrCat(sub1,t),StrCat(sub2,q)) sub1=?I AM A GOOD WORKER?¡£
2. ±àдËã·¨£¬ÊµÏÖ´®µÄ»ù±¾²Ù×÷StrReplace(S,T,V)¡£ StrCat(S,T)£» SubString(Sub,S,pos,len)¡£
int String_Replace(Stringtype &S,Stringtype T,Stringtype V);//½«´®SÖÐËùÓÐ×Ó´®TÌæ»»ÎªV,²¢·µ»ØÖû»´ÎÊý {
for(n=0,i=1;i<=S[0]-T[0]+1;i++) {
for(j=i,k=1;T[k]&&S[j]==T[k];j++,k++);
if(k>T[0]) //ÕÒµ½ÁËÓëTÆ¥ÅäµÄ×Ó´®:·ÖÈýÖÖÇé¿ö´¦Àí {
if(T[0]==V[0])
for(l=1;l<=T[0];l++) //ÐÂ×Ó´®³¤¶ÈÓëÔ×Ó´®Ïàͬʱ:Ö±½ÓÌæ»» S[i+l-1]=V[l];
else if(T[0] for(l=S[0];l>=i+T[0];l--) S[l+V[0]-T[0]]=S[l]; for(l=1;l<=V[0];l++) S[i+l-1]=V[l]; } else //ÐÂ×Ó´®³¤¶ÈСÓÚÔ×Ó´®Ê±:ÏȽ«ºó²¿×óÒÆ { for(l=i+V[0];l<=S[0]+V[0]-T[0];l++) S[l]=S[l-V[0]+T[0]]; for(l=1;l<=V[0];l++) S[i+l-1]=V[l]; } S[0]=S[0]-T[0]+V[0]; i+=V[0];n++; }//if }//for return n;