链队列的结构及其操作
来源:互联网 发布:苹果双系统删除windows 编辑:程序博客网 时间:2024/05/18 00:22
/** * *作者:LinX 2017-6-16-上午 * *内容:链队列的结构及其应用 * *看严蔚敏教材上的图解,就很清晰 */#include <stdio.h> #include <stdlib.h>typedef int ElemType;typedef struct QNode{ElemType data;struct QNode *next;}QNode,*QueuePtr;typedef struct{QueuePtr front;QueuePtr rear;}LinkQueue;/*基本操作*/LinkQueue* initQueue();//初始化链队列void EnQue(LinkQueue *Q,ElemType e);//入队ElemType DeQue(LinkQueue *Q);//出队int isEmpty(LinkQueue *Q);//判空void printQue(LinkQueue *Q);//输出队列 int main(){LinkQueue *Q=initQueue();EnQue(Q,1);EnQue(Q,2);EnQue(Q,3);printQue(Q);DeQue(Q);DeQue(Q);DeQue(Q);printQue(Q);DeQue(Q);return 0;}/*初始化链队列*/LinkQueue* initQueue(){LinkQueue *Q=(LinkQueue*)malloc(sizeof(LinkQueue));//两个指针同时指向一个节点 Q->front=(QueuePtr *)malloc(sizeof(QueuePtr));Q->rear=Q->front;Q->front->next=NULL;return Q;}/*出队*/ElemType DeQue(LinkQueue *Q){int e;if(isEmpty(Q)==1){return 0;}QNode *p=Q->front->next;Q->front->next=p->next;//这里需要注意:如果出队的是最后一个元素,那么尾指针需要调整指向 if(Q->rear==p){//printf("sss");Q->front->next=NULL;Q->rear=Q->front;}e=p->data;free(p);return e;} /*入队*/void EnQue(LinkQueue *Q,ElemType e){QNode *s=(QNode*)malloc(sizeof(QNode));s->data=e;Q->rear->next=s;Q->rear=s;s->next=NULL;}/*打印链队列*/void printQue(LinkQueue *Q){QNode *p;p=Q->front->next;while(p!=NULL){printf("%d ",p->data);p=p->next;}printf("\n");}int isEmpty(LinkQueue *Q){if(Q->front==Q->rear){printf("\n队空\n");return 1;}return 0;}
阅读全文
1 0
- 链队列的结构及其操作
- 循环队列的结构及其操作
- 循环链表的结构及其操作
- 单链表的结构及其操作
- 双链表的结构及其操作
- 栈的结构及其操作
- 队列——链式存储结构及其基本运算(链队列的另一种表达方式)
- 链队列结构及操作
- 队列的顺序存储及其基本操作
- 队列的定义及其基本操作
- 队列的基本操作实现及其应用
- 实验4:栈和队列的基本操作实现及其应用——链队列
- 实验4:栈和队列的基本操作实现及其应用之《链队列》
- 实验4:栈和队列的基本操作实现及其应用之《链队列》
- 实验4:栈和队列的基本操作实现及其应用之《链队列》
- C++队列及其操作
- 单链表的存储结构及其基本操作
- 顺序表的结构及其操作
- JVM-堆学习之新生代老年代持久带的使用关系
- 腾讯云CentOS7安装LNMP
- Linux文件系统详解
- 走向云计算之HBase的shell命令和JavaAPI详解
- Java正则表达式
- 链队列的结构及其操作
- 自然语言处理一:基于朴素贝叶斯的语种检测
- web前端开发常用代码段及知识点
- 自动弹出下载提示框
- HDU Frogs 5514 容斥
- Object类中的方法,修饰符
- 直播中拖动不准 3分钟搞明白
- python28章 项目9文件共享GUI版本
- 第二章:一切都是对象