您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 链式队列定义及其操作算法的实现
#includeiostreamusingnamespacestd;#definetrue1#definefalse0typedefstructNode//定义一个队列{intdata;structNode*next;}LinkQueueNode;typedefstruct{LinkQueueNode*front;LinkQueueNode*rear;}LinkQueue;voidInitQueue(LinkQueue*Q)//初始化一个队列,把声明的队列的对象作为初始化的参数,不能用局部声明的变量{Q-front=Q-rear=(LinkQueueNode*)malloc(sizeof(LinkQueueNode));Q-front-next=NULL;}voidCreatQueue(LinkQueue*Q)//建立一个队列{inti,n;LinkQueueNode*s;cout输入队列中的元素的个数nendl;cinn;cout输入队列中的元素endl;for(i=0;in;i++){s=(LinkQueueNode*)malloc(sizeof(LinkQueueNode));//要分配空间cins-data;Q-rear-next=s;Q-rear=s;//s=s-next;无用}Q-rear-next=NULL;}intEnterQueue(LinkQueue*Q,intx)//入队操作{LinkQueueNode*NewNode;NewNode=(LinkQueueNode*)malloc(sizeof(LinkQueueNode));if(NewNode!=NULL){NewNode-data=x;NewNode-next=NULL;Q-rear-next=NewNode;Q-rear=NewNode;return(true);}elsereturn(false);}voidDeleteQueue(LinkQueue*Q)//出对操作{intdata;LinkQueueNode*p;if(Q-front==Q-rear){cout队列为空endl;}else{p=Q-front-next;Q-front-next=p-next;data=p-data;free(p);coutdataendl;}}voidOutput(LinkQueue*Q)//输出队列中的值{LinkQueue*s;s=Q;LinkQueueNode*p;p=s-front-next;while(p!=NULL){coutp-data;p=p-next;}coutendl;}intmain(){LinkQueue*Q=(LinkQueue*)malloc(sizeof(LinkQueue));InitQueue(Q);intaa=1,x;while(aa){cout建队列请按1endl;cout进队列请按2endl;cout出队列请按3endl;cout输出请按4endl;cout退出请按0endl;cinaa;switch(aa){case1:CreatQueue(Q);break;case2:cout输入进队列的值xendl;cinx;EnterQueue(Q,x);break;case3:DeleteQueue(Q);break;case4:Output(Q);break;case0:return(0);break;default:aa=0;break;}}return0;}
本文标题:链式队列定义及其操作算法的实现
链接地址:https://www.777doc.com/doc-4150503 .html