首页 > 代码库 > 链表队列的实现
链表队列的实现
队列也是数据结构中比较重要的一种,和栈相反的是,队列是先进先出的,先进队列的可以先出队,跟平时我们排队是一样的。在允许多通道程序运行的计算机系统中,同时几个作业运行。凡是申请输出的作业都从队尾进入队列。
现在用链表实现队列,先定义一个链表结点:
typedef struct QNode { int data; QNode *next; }QNode,*QueuePtr;给队列定义一个头结点结构体,结构体中包含着两个链表结点指针,第一个指针指向对象的头结点,第二个指针指向对象的尾结点:
typedef struct { QueuePtr front; QueuePtr rear; }LinkQueue;下面编写初始化队列:
bool InitQueue(LinkQueue &Q) { Q.front=Q.rear=NULL; return true; }下面是压入数据的代码,数据被从队尾压入:
bool EnQueue(LinkQueue &Q,int e) { if(Q.front==NULL) { Q.front=new QNode; Q.front->data=http://www.mamicode.com/e;>然后给出从对头出队的代码,数据从对头取出:bool DeQueue(LinkQueue &Q,int &e) { if(Q.front==NULL) return false; if(Q.front==Q.rear) { e=Q.front->data; delete Q.front; Q.front=NULL; Q.rear=NULL; return true; } QueuePtr p=Q.front; e=p->data; Q.front=p->next; delete p; return true; }下面编写测试代码:void main() { LinkQueue L; InitQueue(L); cout<<"please input 5 integers: "; int x=0; for(int i=0;i<5;i++) { cin>>x; EnQueue(L,x); } cout<<"out of queue: "; while(L.front!=NULL) { DeQueue(L,x);cout<<x<<" "; } }测试结果为:
链表队列的实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。