链队列的初始化、入队、出队及打印(数据结构)
2017-07-24 20:27
295 查看
#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<stdio.h> #define OK 1 #define ERROR 0 typedef 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"); }
相关文章推荐
- 队列的入队,出队,测长度,打印c++代码
- 编程实现队列的入队、出队、测长、打印
- 队列的入队,出队,测长,打印操作
- C++实现普通队列,循环队列的基本操作(初始化,入队,出队,获取队列首元素等)
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- 编程实现队列的入队、出队、测长、打印
- 顺序队列的创建、初始化、判断空、入队、出队、读取队头元素、置空、求队长操作
- 队列的创建、入队、出队、打印、统计队列长度
- 【数据结构】队列的出队和入队操作
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- 链队列的初始化、入队、出队等操作实现
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- 队列的入队,出队,测长度,打印c++代码
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- 队列的入队,出队,测长,打印操作 .
- 数据结构必须掌握内容队列--入队,出队
- 队列的入队,出队,测长度,打印c++代码
- 数据结构 c语言实现顺序队列(输数字入队,字符出队)
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果