首页天道酬勤数据结构环形队列,数据结构 队列

数据结构环形队列,数据结构 队列

admin 05-06 11:38 145次浏览

顺序

循环队列初始化: front=rear=0;

入队操作: rear=(rear1) %Maxsize;

出队操作: front=(front1) %Maxsize;

判断是否为空队列: front==rear;

判断队列是否已满。 front=(rear 1) %Maxsize;

# include stdio.h # include malloc.h # define maxsize 10 typedefstructqnode * ptr node; 结构节点//单个节点{int* data; int front,rear; int maxsize; (; 类型顶点节点队列; 队列创建(int maxsize ) queueq=(queue ) malloc (sizeof ) qnode ); q-data=(int* ) malloc ) maxsize * (sizeof ) qnode ) ); q-front=q-rear=0; q-maxsize=Maxsize; 返回q; }boolis_full(queueq ) return ) q-rear1%q-maxsize==q-front ); }booladdq(queueq,int x ) if (is _ full ) q ) {return false; (else ) q-rear=) q-rear1) % q-maxsize; //q-data[q-rear]=x; printf('%d入队”)、q-data[q-rear]; 返回真; }boolis_empty(queueq ) return ) q-front==q-rear ); }voiddelete(queueq ) if ) is_empty ) ) {return; (else ) q-front=) q-front1) % q-maxsize; //printf_s('%d ',q-data[q-front] ); }}int main () {queue q; q=create(maxsize ); addq(q,1; addq(q,2; addq(q,3; Delete(q; int tail=q-front; 威尔(tail!=q-rear({tail=) tail1) % Maxsize; printf_s('%d ',q-data[tail] ); )链式

# include iostream # include stdlib.husingnamespacestd; 定义连接typedef struct QNode //队列的节点{ int data; 结构节点*下一步; }QNode; 定义类型结构//链队列的数据结构{ QNode *front; QNode *rear; (}链接队列; //空队列qlin kqueue * init queue (链接队列* q ) ) qnode * tmp=(qnode * ) malloc (sizeof ) qnode ) ); 问前端=tmp; q-rear=tmp; q-front-next=NULL; 返回q; //link queue * enqueue (link queue * q,int e ) ) qnode * p=(qnode * ) malloc (sizeof ) qnode ) ); //为插入节点分配空间if (! p )//空间分配失败向cout '节点插入内存分配失败!' endl; (else(/建设节点p-data=e; //为插入节点的数据域分配p-next=NULL; //为插入节点的指针字段分配值//实现插入q-rear-next=p; //插入团队末尾的q-rear=p; //团队指针重新指向新任团队尾部(} return q; (//元素为linkqueue*dequeue(linkqueue*q ) ) { QNode *p; if(q-front==q-rear({cout}链队列为空。 无法进行删除操作。 ' endl; } else { p=q-front-next; //将想要删除的团队领导的节点临时放置在p int e=p-data上; 为e cout 'delete: ' e endl分配团队标头数据; q-front-next=p-next; //删除,将原队列开头节点的后续p-next代入开头节点的后续if (q-rear==p )//此时,链队列中只有一个元素节点(//如果开头是队列的最后,则在删除后将rear指向开头节点) ' endl; q-rear=q-front; (自由) p; }返回q; (返回//团队的领先元素voidgetqhead (链接队列* q ) ) { QNode *p; if(q-front==q-rear ) )链队列为空,无法返回团队标头数据(endl )。 } else { p=q-front-next; //团队领导cout '团队领导要素: ' p-data endl; }//队列长度求voidqueuelength (链路队列* q ) { int length=0; QNode *p; p=q-front-next; //团队领导While(P ) ) { length; p=p-next; } cout '队列长度: ' length endl; //打印。 开头节点,真正保存要素的位置从开头节点的下一个位置(开头)开始! voidprintqueue (链接队列* q ) { QNode *p; //团队领导p=q-front-next; //头部节点的下一个节点是团队的头部! while(p )//从队伍开头开始依次向后计数p-data ' ); p=p-next; } cout endl; (}int main ) ) { LinkQueue q; initqueue(q; enqueue(q,1 ); 打印队列(q; enqueue(q,2 ); 打印队列(q; enqueue(q,3 ); 打印队列(q; enqueue(q,4 ); 打印队列(q; getqhead(q; 队列长度(q; cout'***************'endl; dequeue(q; 打印队列(q; getqhead(q; dequeue(q; 打印队列(q; getqhead(q; dequeue(q; 打印队列(q; dequeue(q; 打印队列(q; 队列长度(q; cout'***************'endl; dequeue(q; cout'***************'endl; 返回0; }

月付6.99美元如何在Clojure中将字符串附加到向量Session
循环队列c++,c语言数据结构顺序表 leetcode简单题,leetcode 两数之和
相关内容