链队列的基本操作
来源:互联网 发布:苹果系统删除软件 编辑:程序博客网 时间:2024/04/30 00:08
C++链队列的基本操作
#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
- 链队列的基本操作
- 链队列的基本操作
- 链队列的基本操作
- 链队列的基本操作
- 链队列的基本操作
- 链队列的基本操作
- 链队列的基本操作
- 链队列的基本操作
- 链队列的基本操作
- 链队列的基本操作
- 队列的基本操作
- 队列的基本操作
- 队列的基本操作
- 队列的基本操作!
- 队列的基本操作
- 队列的基本操作
- 队列的基本操作
- 队列的基本操作
- StringTokenizer的用法及示例
- Android ORMLite 的使用
- navisworks 二次开发 使用Controls控件的同时可以获取Autodesk.Navisworks.Api.Interop.ComApi.InwOpState10 state
- linux less查看日志信息
- MySQL数据库知识点8
- 链队列的基本操作
- linux命令tail
- tomcat启动太慢耗时很长的问题
- Html Websocket搭建右下角聊天室
- 解决ScrollView嵌套RecyclerView后失去惯性问题
- [Leetcode] 118. Pascal's Triangle 解题报告
- talend与大数据分析QQ群
- Android 进程、线程
- jquery的Ajax的小总结