Êý¾Ý½á¹¹ÓëË㷨ϰÌâ¼°´ð°¸ ÏÂÔØ±¾ÎÄ

¾«ÐÄÕûÀí

{//³ö¶Ó,°ÑÍ·½áµãÖ®ºóµÄÔªËØÕªÏÂ

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

templateclassQueue{ public: Queue(int=10); ~Queue(){delete[]Q;}

//Ñ­»·¶ÓÁеÄÀඨÒå

¾«ÐÄÕûÀí

¾«ÐÄÕûÀí

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 Queue::Queue(intsz):rear(0),front(0),tag(0),m(sz){ //½¨Á¢Ò»¸ö×î´ó¾ßÓÐm¸öÔªËØµÄ¿Õ¶ÓÁС£ Q=newType[m]; assert(Q!=0); } //´´½¨¶ÓÁпռä //¶ÏÑÔ:¶¯Ì¬´æ´¢·ÖÅä³É¹¦Óë·ñ

²åÈ뺯Êý template voidQueue::EnQueue(Type&item){ } assert(!IsFull()); rear=(rear+1)%m; Q[rear]=item; tag=1; //ÅжÓÁÐÊÇ·ñ²»Âú£¬ÂúÔò³ö´í´¦Àí //¶ÓβλÖýø1,¶ÓβָÕëָʾʵ¼Ê¶ÓβλÖà //½ø¶ÓÁÐ //±êÖ¾¸Ä1£¬±íʾ¶ÓÁв»¿Õ

ɾ³ýº¯Êý template TypeQueue::DeQueue(){ assert(!IsEmpty()); front=(front+1)%m; tag=0; returnQ[front]; //Åж϶ÓÁÐÊÇ·ñ²»¿Õ£¬¿ÕÔò³ö´í´¦Àí //¶ÓͷλÖýø1,¶ÓÍ·Ö¸Õëָʾʵ¼Ê¶ÓÍ·µÄǰһλÖà //±êÖ¾¸Ä0,±íʾջ²»Âú //·µ»ØÔ­¶ÓÍ·ÔªËØµÄÖµ }

¶ÁÈ¡¶ÓÍ·ÔªËØº¯Êý template TypeQueue::GetFront(){ }

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; friendclassList; private:

}; 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;}

//¿Õ±íʱ,нáµã³ÉΪÁ´±íµÚÒ»¸ö½áµã //·Ç¿Õ±íʱ,нáµãÁ´ÈëÁ´Î²

¾«ÐÄÕûÀí