正在加载图片...
void EnCiQueue( CiQueue&Q, int x)/把元素x插入循环链表表示的队列QQ指向 队尾元素,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 De CiQueue( CiQueue&Q, int x)从循环链表表示的队列Q头部删除元素x if(=Q>next) return INFEASIBLE/队列已空 P=Q->next->next xp->data Q->next->next=p->next free(p); eturn OK i//DeCiQueue 3.29 Status EnCyQueue( qUeue&Q,intx∥/带tag域的循环队列入队算法 if(Q. front= Qrear&&Qtag=1)/tag域的值为0表示"空",l表示"满 return OVERFLOW Q rear(Q rear+ 1)%MAXSIZE if(Q. front= EQ rear))Qtag=1l;/队列满 i//En Cy Queue Status DeCy Queue( CyQueue&Qnt&x)带tag域的循环队列出队算法 if(Q front==Q rear&&Q tag=0)return INFEASIBLE; Q front=(Q front+1)%MAXSIZE xQ. base[Q front]; if(Q. front= EQ rear))Qtag=1;/队列空 return OK //DeCy Queue 分析:当循环队列容量较小而队列中每个元素占的空间较多时,此种表示方法可以 节约较多的存储空间,较有价值. 3.30void 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 3.29 Status EnCyQueue(CyQueue &Q,int x)//带 tag 域的循环队列入队算法 { if(Q.front==Q.rear&&Q.tag==1) //tag 域的值为 0 表示"空",1 表示"满" return OVERFLOW; Q.base[Q.rear]=x; Q.rear=(Q.rear+1)%MAXSIZE; if(Q.front==Q.rear) Q.tag=1; //队列满 }//EnCyQueue Status DeCyQueue(CyQueue &Q,int &x)//带 tag 域的循环队列出队算法 { if(Q.front==Q.rear&&Q.tag==0) return INFEASIBLE; Q.front=(Q.front+1)%MAXSIZE; x=Q.base[Q.front]; if(Q.front==Q.rear) Q.tag=1; //队列空 return OK; }//DeCyQueue 分析:当循环队列容量较小而队列中每个元素占的空间较多时,此种表示方法可以 节约较多的存储空间,较有价值. 3.30
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有