队列的基本操作

来源:互联网 发布:hmc5983中文数据手册 编辑:程序博客网 时间:2024/04/26 23:19

队列(有头结点)

#include<iostream>using namespace std;typedef struct node{int data;struct node *next;}node,*point;typedef struct {point front,rear;}listqueue;listqueue Q;bool empty(listqueue Q)//判队空{return (Q.front==Q.rear);}void initq(listqueue &Q) //初始化,构造一个空队列{Q.front=Q.rear=new node;if(!Q.front){cout<<"error! init error\n";}Q.front->next=NULL;}void enqueue(listqueue &Q)//入队{point p;int x;while(cin>>x&&x){p=new node;p->data=x;p->next=NULL;Q.rear->next=p;Q.rear=p;}}void outqueue(listqueue &Q) //出队{if(empty(Q)){cout<<"ERROR!  The queue is empty"<<endl;return;}point p,q;p=Q.front->next;while(p){q=p;cout<<p->data<<" ";Q.front->next=p->next;if(Q.rear==p)Q.rear=Q.front;p=p->next;free(q);}cout<<endl;}int lengh(listqueue Q){point p;int n=0;p=Q.front->next;while(p){n++;p=p->next;}return n;}int main(){initq(Q);enqueue(Q);cout<<lengh(Q)<<endl<<endl;outqueue(Q);return 0;}


 

原创粉丝点击