¾«ÐÄÕûÀí
{//³ö¶Ó,°ÑÍ·½áµãÖ®ºóµÄÔªËØÕªÏÂ
Datatypet;
QueueNode*p;
if(EmptyQueue(Q))
Error(\
p=Q->rear->next->next;//pÖ¸Ïò½«ÒªÕªÏµĽáµã x=p->data;//±£´æ½áµãÖÐÊý¾Ý if(p==Q->rear) {//µ±¶ÓÁÐÖÐÖ»ÓÐÒ»¸ö½áµãʱ£¬p½áµã³ö¶Óºó£¬Òª½«¶ÓβָÕëÖ¸ÏòÍ·½áµã Q->rear=Q->rear->next;Q->rear->next=p->next;} else? Q->rear->next->next=p->next;//ժϽáµãp free(p);//Êͷű»É¾½áµã returnx; } £¨7£©¼ÙÉèÒÔÊý×éQ[m]´æ·ÅÑ»·¶ÓÁÐÖеÄÔªËØ,ͬʱÉèÖÃÒ»¸ö±êÖ¾tag£¬ÒÔtag==0ºÍtag==1À´Çø±ðÔÚ¶ÓÍ·Ö¸Õë(front)ºÍ¶ÓβָÕë(rear)ÏàµÈʱ£¬¶ÓÁÐ״̬Ϊ¡°¿Õ¡±»¹ÊÇ¡°Âú¡±¡£ÊÔ±àдÓë´Ë½á¹¹ÏàÓ¦µÄ²åÈë(enqueue)ºÍɾ³ý(dlqueue)Ëã·¨¡£
¡¾½â´ð¡¿
Ñ»·¶ÓÁÐÀඨÒå
#include
template
//Ñ»·¶ÓÁеÄÀඨÒå
¾«ÐÄÕûÀí
¾«ÐÄÕûÀí
voidEnQueue(Type&item); TypeDeQueue(); TypeGetFront();
voidMakeEmpty(){front=rear=tag=0;}
//ÖÿնÓÁÐ
intIsEmpty()const{returnfront==rear&&tag==0;} //ÅжÓÁпշñ intIsFull()const{returnfront==rear&&tag==1;} //ÅжÓÁÐÂú·ñ private: intrear,front,tag; Type*Q; intm; }
//¶ÓβָÕë¡¢¶ÓÍ·Ö¸ÕëºÍ¶ÓÂú±êÖ¾
//´æ·Å¶ÓÁÐÔªËØµÄÊý×é //¶ÓÁÐ×î´ó¿ÉÈÝÄÉÔªËØ¸öÊý
¹¹Ô캯Êý template
²åÈ뺯Êý template
ɾ³ýº¯Êý template
¶ÁÈ¡¶ÓÍ·ÔªËØº¯Êý template
assert(!IsEmpty());
//Åж϶ÓÁÐÊÇ·ñ²»¿Õ£¬¿ÕÔò³ö´í´¦Àí
//·µ»Ø¶ÓÍ·ÔªËØµÄÖµ
returnQ[(front+1)%m];
(8£©Èç¹ûÔÊÐíÔÚÑ»·¶ÓÁеÄÁ½¶Ë¶¼¿ÉÒÔ½øÐвåÈëºÍɾ³ý²Ù×÷¡£ÒªÇó£º ¢Ùд³öÑ»·¶ÓÁеÄÀàÐͶ¨Ò壻
¢Úд³ö¡°´Ó¶Óβɾ³ý¡±ºÍ¡°´Ó¶ÓÍ·²åÈ롱µÄËã·¨¡£
[ÌâÄ¿·ÖÎö]ÓÃһάÊý×év[0..M-1]ʵÏÖÑ»·¶ÓÁУ¬ÆäÖÐMÊǶÓÁг¤¶È¡£Éè¶ÓÍ·Ö¸ÕëfrontºÍ¶ÓβָÕërear£¬Ô¼¶¨frontÖ¸Ïò¶ÓÍ·ÔªËØµÄǰһλÖã¬rearÖ¸Ïò¶ÓÎ²ÔªËØ¡£¶¨Òåfront=rearʱΪ¶Ó¿Õ£¬(rear+1)%m=frontΪ¶ÓÂú¡£Ô¼¶¨¶ÓÍ·¶ËÈë¶ÓÏòϱêСµÄ·½Ïò·¢Õ¹£¬¶Óβ¶ËÈë¶ÓÏòϱê´óµÄ·½Ïò·¢Õ¹¡£ ¾«ÐÄÕûÀí
¾«ÐÄÕûÀí
£¨1£©#defineM¶ÓÁпÉÄÜ´ïµ½µÄ×î´ó³¤¶È typedefstruct {elemtpdata[M]; intfront,rear; }cycqueue;
£¨2£©elemtpdelqueue(cycqueueQ)
//QÊÇÈçÉ϶¨ÒåµÄÑ»·¶ÓÁУ¬±¾Ë㷨ʵÏÖ´Ó¶Óβɾ³ý£¬Èôɾ³ý³É¹¦£¬·µ»Ø±»É¾³ýÔªËØ£¬·ñÔò¸ø³ö³ö´íÐÅÏ¢¡£
{if(Q.front==Q.rear){printf(¡°¶ÓÁпա±);exit(0);} Q.rear=(Q.rear-1+M)%M;//Ð޸ĶÓβָÕë¡£
return(Q.data[(Q.rear+1+M)%M]);//·µ»Ø³ö¶ÓÔªËØ¡£ }//´Ó¶Óβɾ³ýËã·¨½áÊø
voidenqueue(cycqueueQ,elemtpx) //QÊÇ˳Ðò´æ´¢µÄÑ»·¶ÓÁУ¬±¾Ë㷨ʵÏÖ¡°´Ó¶ÓÍ·²åÈë¡±ÔªËØx¡£ {if(Q.rear==(Q.front-1+M)%M){printf(¡°¶ÓÂú¡±;exit(0);) Q.data[Q.front]=x;//xÈë¶ÓÁÐ Q.front=(Q.front-1+M)%M;//Ð޸ĶÓÍ·Ö¸Õë¡£ }//½áÊø´Ó¶ÓÍ·²åÈëËã·¨¡£ £¨9£©ÒÑÖªAckermannº¯Êý¶¨ÒåÈçÏÂ: ¢Ùд³ö¼ÆËãAck(m,n)µÄµÝ¹éËã·¨£¬²¢¸ù¾Ý´ËËã·¨¸ø³ö³öAck(2,1)µÄ¼ÆËã¹ý³Ì¡£ ¢Úд³ö¼ÆËãAck(m,n)µÄ·ÇµÝ¹éËã·¨¡£ intAck(intm,n) {if(m==0)return(n+1); elseif(m!=0&&n==0)return(Ack(m-1,1)); elsereturn(Ack(m-1,Ack(m,m-1)); }//Ëã·¨½áÊø £¨1£©Ack(2,1)µÄ¼ÆËã¹ý³Ì Ack(2,1)=Ack(1,Ack(2,0))//Òòm<>0,n<>0¶øµÃ =Ack(1,Ack(1,1))//Òòm<>0,n=0¶øµÃ =Ack(1,Ack(0,Ack(1,0)))//Òòm<>0,n<>0¶øµÃ =Ack(1,Ack(0,Ack(0,1)))//Òòm<>0,n=0¶øµÃ =Ack(1,Ack(0,2))//Òòm=0¶øµÃ =Ack(1,3)//Òòm=0¶øµÃ =Ack(0,Ack(1,2))//Òòm<>0,n<>0¶øµÃ =Ack(0,Ack(0,Ack(1,1)))//Òòm<>0,n<>0¶øµÃ =Ack(0,Ack(0,Ack(0,Ack(1,0))))//Òòm<>0,n<>0¶øµÃ =Ack(0,Ack(0,Ack(0,Ack(0,1))))//Òòm<>0,n=0¶øµÃ =Ack(0,Ack(0,Ack(0,2)))//Òòm=0¶øµÃ =Ack(0,Ack(0,3))//Òòm=0¶øµÃ =Ack(0,4)//Òòn=0¶øµÃ =5//Òòn=0¶øµÃ
£¨2£©intAckerman(intm,intn) {intakm[M][N];inti,j;
for(j=0;j {akm[i][0]=akm[i-1][1]; for(j=1;j ¾«ÐÄÕûÀí akm[i][j]=akm[i-1][akm[i][j-1]]; } return(akm[m][n]); }//Ëã·¨½áÊø £¨10£©ÒÑÖªfΪµ¥Á´±íµÄ±íÍ·Ö¸Õë,Á´±íÖд洢µÄ¶¼ÊÇÕûÐÍÊý¾Ý£¬ÊÔд³öʵÏÖÏÂÁÐÔËËãµÄµÝ¹éËã·¨£º ¢ÙÇóÁ´±íÖеÄ×î´óÕûÊý£» ¢ÚÇóÁ´±íµÄ½áµã¸öÊý£» ¢ÛÇóËùÓÐÕûÊýµÄƽ¾ùÖµ¡£ #include }; classList{ private: }; } voidList::NewList(constintretvalue){ first=NULL;intvalue;ListNode*q; cout<<\; cin>>value; while(value!=retvalue){ //Ìáʾ //ÊäÈë //ÊäÈëÓÐЧ //½¨Á¢°üº¬valueµÄнáµã //½¨Á¢Á´±í,ÒÔÊäÈëretvalue½áÊø ListNode*first,current; intMax(ListNode*f); intNum(ListNode*f); floatAvg(ListNode*f,int&n); List():first(NULL),current(NULL){} ~List(){} ListNode*NewNode(constintitem); voidNewList(constintretvalue); voidPrintList(); //¹¹Ô캯Êý //Îö¹¹º¯Êý //´´½¨Á´±í½áµã,ÆäֵΪitem //Á´±íÀà intdata; //½áµãÊý¾Ý //½áµãÖ¸Õë //¹¹Ô캯Êý ListNode*link; //Á´±í½áµãÀà classListNode{ //¶¨ÒåÔÚÍ·Îļþ\ÖÐ ListNode(constintitem):data(item),link(NULL){} public: //½¨Á¢Á´±í,ÒÔÊäÈëretvalue½áÊø //Êä³öÁ´±íËùÓнáµãÊý¾Ý //ÇóÁ´±íËùÓÐÊý¾ÝµÄ×î´óÖµ //ÇóÁ´±íÖÐÊý¾Ý¸öÊý //ÇóÁ´±íËùÓÐÊý¾ÝµÄƽ¾ùÖµ //´´½¨ÐÂÁ´±í½áµã intGetMax(){returnMax(first);} intGetNum(){returnNum(first);} floatGetAvg(){returnAvg(first);} ListNode*List::NewNode(constintitem){ returnnewnode; ListNode*newnode=newListNode(item); q=NewNode(value); if(first==NULL)first=current=q; else{current->link=q;current=q;} //¿Õ±íʱ,нáµã³ÉΪÁ´±íµÚÒ»¸ö½áµã //·Ç¿Õ±íʱ,нáµãÁ´ÈëÁ´Î² ¾«ÐÄÕûÀí