单链队列的建立,插入,删除,打印,销毁
来源:互联网 发布:写小说软件 mac 编辑:程序博客网 时间:2024/05/29 17:07
#include<iostream>#define MAZSIZE 100#define OK 1#define ERROR 0using namespace std;typedef intQElemType;//------------定义节点结构-------------typedef struct QNode {QElemType data;struct QNode *next;}QNode, *QueuePtr;//-------定义队列头尾指针结构----------typedef struct{ QueuePtr front;QueuePtr rear;}LinkQueue;//------------建单链队列---------------int InitQueue(LinkQueue &Q){//分配一个节点,即头结点,头指针和尾指针均指向此头结点Q.front = Q.rear = (QueuePtr)malloc(sizeof(QNode)); if (!Q.front) return ERROR;Q.front->next = NULL;return OK;}//------------向队尾中插入数据----------void EnQueue(LinkQueue &Q,QElemType e){QNode *p;p = (QueuePtr)malloc(sizeof(QNode));if (!p){cout << "OVERFLOW!" << endl;}p->data = e;p->next =Q.rear->next; //单链队列的为节点的next为NULLQ.rear->next = p;Q.rear = p;}//-------------删除队头元素-------------void DeQueue(LinkQueue &Q){QNode *p;if (Q.front == Q.rear){cout << "单链队列为空!" << endl;}else{if (Q.front->next == Q.rear){p = Q.front->next;Q.front->next = p->next;Q.rear = Q.front;}else{p = Q.front->next;Q.front->next = p->next;free(p);}}}//-------------打印单链队列--------------void PrintQuede(LinkQueue &Q){QNode *p;p = Q.front;cout << "单链队列的元素:" << endl;if (Q.front == Q.rear){cout << "单链队列为空!" << endl;}else{while (p != Q.rear){p = p->next;cout << p->data << endl;}}}//-----------销毁队列-------------void DestroyQueue(LinkQueue &Q){while (Q.front){Q.rear = Q.front->next;Q.front = Q.rear;}cout << "队列销毁成功!" << endl;}//--------------main()------------void main(){LinkQueue Q;QElemType e1, e2, e3, e4;e1 = 1;e2 = 2;e3 = 3;e4 = 4;cout << endl << endl << "单链队列的实现以及相关操作";cout << endl << "==========================" << endl;InitQueue(Q);//建单链队列EnQueue(Q, e1);//插入节点元素EnQueue(Q, e2);EnQueue(Q, e3);EnQueue(Q, e4);PrintQuede(Q);//打印单链队列DeQueue(Q);//删除队头PrintQuede(Q);DestroyQueue(Q);//销毁单链队列system("pause");//防止结果一闪而过}
阅读全文
0 0
- 单链队列的建立,插入,删除,打印,销毁
- 链队列的初始化,建立,插入,查找,删除
- 链队列的初始化,建立,插入,查找,删除。
- 队列的实现 插入 删除 打印
- c++之链表篇1:单向链表的创建,打印,删除,插入,销毁等基本操作
- 双向链表的创建、打印、求长、插入、删除、查值、清空、销毁
- 双向循环链表的创建、插入、删除、求长、查询、打印、修改、清空、销毁
- 单链表的建立,测长,打印,删除,插入,排序,逆置
- 单链表的建立,测长,打印,删除,插入,排序,逆置
- 单链表的建立,测长,打印,删除,插入,排序,逆置
- 单链表的建立、测长、打印、删除节点、插入节点
- 实现一个单链表的建立、测长、打印、删除、插入
- 双链表的建立、测长、打印、删除、插入
- 顺序队列的初始化,建立,插入,查找,删除
- 顺序队列的初始化,建立,插入,查找,删除。
- 线性表的操作(完成表的建立,插入,删除,排序,销毁,查找 )
- 循环队列的实现,插入,删除,打印,求长度
- 链表基本操作(建立、修改,插入、删除、打印)
- PAT5-38 数列求和-加强版
- SDCycleScrollView使用中遇到的问题
- Android面试(一)Activity
- LightOJ-1414-February 29--总共多少个闰日?--两种解法
- eclipse中写js,JQuery,html...的非常好用的插件
- 单链队列的建立,插入,删除,打印,销毁
- 关于事务、ThreadLocal应用、CompletionService的一些总结
- Spring框架简介
- :loading的注意选项
- SQlite数据库的C编程接口(七) 数据库锁定(Database Locking) ——《Using SQlite》读书笔记
- Android开发倒计时-CountDownTimer的使用
- 斐波那契数列生成
- 打开文件open()函数的使用方法详解--C语言函数
- 数据在EMMC(nand flash)和 RAM中的交互