链队列的初始化、入队、出队及打印(数据结构)

来源:互联网 发布:济南seo外包公司 编辑:程序博客网 时间:2024/04/16 17:59
#define _CRT_SECURE_NO_WARNINGS#include<iostream>#include<stdio.h>#define OK 1#define ERROR 0typedef int Status;typedef int QElemType;using namespace std;typedef struct QNode //结点结构{QElemType data;struct QNode *next;}QNode,*QueuePtr;typedef struct //队列的链表结构{QueuePtr front, rear;//队头、队尾指针}LinkQueue;//队列的初始化Status InitQueue(LinkQueue &Q){Q.front = Q.rear = (QueuePtr)malloc(sizeof(QNode));if (!Q.front) return ERROR;Q.front->next = NULL;return OK;}//入队操作Status EnQueue(LinkQueue &Q, QElemType e){QueuePtr p = (QueuePtr)malloc(sizeof(QNode));if (!p)//若内存分配失败return ERROR;p->data = e;p->next = NULL;Q.rear->next = p;Q.rear = p;return OK;}//出队操作,将出队的数据存储到e中Status DeQueue(LinkQueue &Q, QElemType &e){QueuePtr p;if (Q.front == Q.rear) return ERROR;p = Q.front->next;e = p->data;Q.front->next = p->next;if (Q.rear == p) Q.rear = Q.front;//若队头是队尾,则删除后将rear指向头结点free(p);return OK;}//打印队列void PrintQueue(LinkQueue &Q){QueuePtr p = Q.front->next;while (p != NULL){cout << p->data<<" ";p = p->next;}}void main(){LinkQueue Q;InitQueue(Q);cout << "请输入5个整型数据" << endl;for (int i = 0; i < 5; i++){int e;cin >> e;EnQueue(Q, e);}PrintQueue(Q);//测试出队int n;DeQueue(Q, n);cout <<endl<< "出队一个元素后的队列为:"<< endl;PrintQueue(Q);cout << "出队的数据为:" << n << endl;system("pause");}

阅读全文
0 0
原创粉丝点击