首页 > 代码库 > 队列之链表实现
队列之链表实现
#include<iostream>using namespace std;struct LinkQueueNode{ LinkQueueNode* nextIn; int value;};struct LinkQueue{ LinkQueueNode* front; LinkQueueNode* rear; bool isEmpty; int cnt;}; LinkQueue* createLinkQueue(){ LinkQueueNode* head = (LinkQueueNode* )malloc(sizeof(LinkQueueNode)); LinkQueue* link =(LinkQueue*)malloc(sizeof(LinkQueue)); link->front=head; link->rear=head; link->isEmpty=true; link->cnt=0; return link;}void InQueue(LinkQueue* q, int value){ LinkQueueNode* newIn = (LinkQueueNode* )malloc(sizeof(LinkQueueNode)); newIn->nextIn=NULL; newIn->value=http://www.mamicode.com/value; q->rear->nextIn=newIn; q->rear=newIn; q->isEmpty=((++q->cnt)==0);}bool Dequeue(LinkQueue* q, int* value){ if(!q->isEmpty) { LinkQueueNode* tep = q->front->nextIn; *value = http://www.mamicode.com/tep->value; q->front->nextIn=tep->nextIn; q->isEmpty=((--q->cnt)==0); if(q->isEmpty) q->rear=q->front;///当清空的时候,要重新设置rear delete tep; return 1; } return 0;}bool front(LinkQueue* q, int* value){ if(!q->isEmpty) { LinkQueueNode* tep = q->front->nextIn; *value = http://www.mamicode.com/tep->value; return 1; } return 0;}void outPut(LinkQueue* q){ LinkQueueNode* p = q->front->nextIn; while(p!=NULL) { cout<<p->value<<" "; p=p->nextIn; } cout<<endl;}void clearLinkQueue(LinkQueue* q){ int x; while(!q->isEmpty) { Dequeue(q,&x); cout<<x<<" "; } cout<<endl;}void main(){ int len=10; LinkQueue* q = createLinkQueue(); int v; for(int i=0;i<len;i++) { v = rand() % 100; cout<<v<<" "; InQueue(q,v); } cout<<endl; outPut(q); clearLinkQueue(q); for(int i=0;i<len;i++) { v = rand() % 100; cout<<v<<" "; InQueue(q,v); } cout<<endl; outPut(q); Dequeue(q,&v); cout<<v<<endl; outPut(q); front(q,&v); cout<<v<<endl; outPut(q); Dequeue(q,&v); cout<<v<<endl; outPut(q); Dequeue(q,&v); cout<<v<<endl; outPut(q); for(int i=0;i<5;i++) { v = rand() % 100; cout<<v<<" "; InQueue(q,v); } cout<<endl; outPut(q); if(!front(q,&v)) cout<<"fail"<<endl; else outPut(q); clearLinkQueue(q); if(!front(q,&v)) cout<<"fail"<<endl; else outPut(q); if(!front(q,&v)) cout<<"fail"<<endl; else outPut(q); cin>>len;}
队列之链表实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。