队列-链表形式

来源:互联网 发布:淘宝下单与发货时间 编辑:程序博客网 时间:2024/05/19 18:38
编写一个程序,实现链队的各种基本运算(假设队列中元素类型为char),并在此基础上 
设计一个程序,完成如下功能:
(1)初始化队列q;
(2)判断链队q是否非空;
(3)依次进队a,b,c;
(4)出队一个元素,并输出该元素;
(5)输出链队q的元素个数; 
(6)依次进链队元素d,e,f;
(7)输出链队q的元素个数;
(8)输出出队序列;

(9)释放队列。

<span style="font-size:18px;">#include <iostream>using namespace std;typedef char ElemType;typedef struct qnode{ElemType data;struct qnode *next;}QNode;                     typedef struct{QNode *front;QNode *rear;}LiQueue;void InitQueue(LiQueue * &q){       //初始化队列 q= new LiQueue;q->front = q->rear = NULL;}                                         bool QueueEmpty(LiQueue * &q){     //判断队列是否为空 return (q->rear==NULL);}void enQueue(LiQueue * &q,ElemType e){     //进队列 QNode *p;p = new QNode;p->data = e;p->next = NULL;if(q->rear==NULL)q->front=q->rear=p;else{q->rear->next = p;q->rear = p;} }bool deQueue(LiQueue * &q,ElemType &e){    //出队列 QNode *t;if(q->rear == NULL)return false;t = q->front;if(q->front == q->rear)q->front = q->rear = NULL;else q->front=q->front->next;e=t->data;delete(t);return true;} int QueueLength(LiQueue *&q){       //计算链队长度 QNode *p = q->front;int length=0;while(p!=NULL){length++;p = p->next;}return (length);}/*void PrintQueue(LiQueue *&q){      //打印链队 QNode *p = q->front;while(p!=NULL){cout<<p->data<<" ";p=p->next;}}*/void DestroyQueue(LiQueue * &q){     //销毁链队 QNode *p = q->front,*r;if(p!=NULL){r=p->next;while(r!=NULL){delete(p);p=r; r = p->next;}} delete(p);delete(q);}int main(){LiQueue *q;ElemType e;InitQueue(q);if(QueueEmpty(q))cout<<"链队为空"<<endl; else cout<<"链队不为空"<<endl; enQueue(q,'a');enQueue(q,'b');enQueue(q,'c');deQueue(q,e);cout<<"第一次出队的元素:"<<e<<endl;cout<<"The length 1: "<<QueueLength(q)<<endl;//PrintQueue(q);enQueue(q,'d');enQueue(q,'e');enQueue(q,'f');cout<<"The length 2: "<<QueueLength(q)<<endl;while(q->front!=NULL){QNode *p = q->front;deQueue(q,e);cout<<e<<" "; p=p->next;}DestroyQueue(q);return 0;}</span>


0 0
原创粉丝点击