链队列的基本操作
来源:互联网 发布:滴滴跑腿软件下载 编辑:程序博客网 时间:2024/06/02 07:31
链队列的基本操作
#include<iostream>using namespace std;typedef int QueueElementType;typedef struct Node{ QueueElementType data; struct Node *next;}LinkQueueNode;typedef struct{ LinkQueueNode *front; LinkQueueNode *rear;}LinkQueue;void Initqueue(LinkQueue &Q);void Input(LinkQueue &Q);void Output(LinkQueue Q);bool Isempty(LinkQueue Q);void Enqueue(LinkQueue &Q, QueueElementType e);void Delqueue(LinkQueue &Q, QueueElementType &e);void Gethead(LinkQueue Q, QueueElementType &e);void Clear(LinkQueue &Q);void Interface();int main(){ Interface(); LinkQueue Q; Initqueue(Q); int n; while (1) { cout << "请输入操作序号:"; cin >> n; switch (n) { case 1: { cout << "请依次输入数据,并以-1作为结束标记:" << endl; Input(Q); break; } case 2: { cout << "队列中的元素:" << endl; Output(Q); break; } case 3: { if (Isempty(Q)) { cout << "队列为空!" << endl; } else { cout << "队列不为空!" << endl; } break; } case 4: { QueueElementType e; cout << "请输入入队列元素:"; cin >> e; Enqueue(Q, e); break; } case 5: { QueueElementType e; Delqueue(Q, e); cout << "元素" << e << "已出队列!" << endl; break; } case 6: { QueueElementType e; Gethead(Q, e); cout << "队头元素为:" << e << endl; break; } case 7: { Clear(Q); break; } case 0: { exit(0); break; } default: { cout << "输入的操作序号不正确!请核对..." << endl; } } } return 0;}void Initqueue(LinkQueue &Q){ Q.front = new LinkQueueNode; Q.rear = Q.front; Q.front->next = NULL;}void Input(LinkQueue &Q){ int e; while (1) { cin >> e; if (e == -1) { break; } Enqueue(Q, e); }}void Output(LinkQueue Q){ if (Isempty(Q)) { cout << "队列为空!" << endl; exit(1); } LinkQueueNode *q = Q.front->next; while (q) { cout << q->data << " "; q = q->next; } cout << endl;}bool Isempty(LinkQueue Q){ if (Q.front->next == NULL) { return true; } else { return false; }}void Enqueue(LinkQueue &Q, QueueElementType e){ LinkQueueNode *q = new LinkQueueNode; q->data = e; q->next = NULL; Q.rear->next = q; Q.rear = q;}void Delqueue(LinkQueue &Q, QueueElementType &e){ if (Isempty(Q)) { cout << "队列为空!" << endl; exit(1); } LinkQueueNode *q; q = Q.front->next; Q.front->next = q->next; if (Q.rear == q) { Q.rear = Q.front; } e = q->data; delete q;}void Gethead(LinkQueue Q, QueueElementType &e){ if (Isempty(Q)) { cout << "队列为空!" << endl; exit(1); } e = Q.front->next->data;}void Clear(LinkQueue &Q){ if (Isempty(Q)) { cout << "队列为空!" << endl; exit(1); } LinkQueueNode *p, *q; Q.rear = Q.front; p = Q.front->next; Q.front->next = NULL; while (p) { q = p; p = p->next; delete q; }}void Interface(){ cout << "***************欢迎使用链队列系统***************" << endl; cout << "1:输入队列 2:输出队列" << endl; cout << "3:判断队列是否为空 4:入队列" << endl; cout << "5:出队列 6:取队头元素" << endl; cout << "7:清空队列 0:退出" << endl; cout << "*************************************************" << endl; cout << "输入0-7之间的数:" << endl;}
0 0
- 链队列的基本操作
- 链队列的基本操作
- 链队列的基本操作
- 链队列的基本操作
- 链队列的基本操作
- 链队列的基本操作
- 链队列的基本操作
- 链队列的基本操作
- 链队列的基本操作
- 链队列的基本操作
- 队列的基本操作
- 队列的基本操作
- 队列的基本操作
- 队列的基本操作!
- 队列的基本操作
- 队列的基本操作
- 队列的基本操作
- 队列的基本操作
- 程序员面试金典(8)一个数组实现三个栈
- (1.5.2.8)找出相乘结果只有0和1的整数
- 启动Hive的时候有很多WARN和INFO信息
- note for HTML5权威指南
- 控制情绪7——控制情绪的办法
- 链队列的基本操作
- _tmain()和main()有什么区别
- jsoup源码阅读
- Java 文件操作基础之流操作
- ORACLE 10 g的 merge into 用法
- Android SDK
- SQL语句拼接多了一个单引号抛出的异常
- 设置环境变量命令
- Android开发之资源文件存储