链队列、循环队列的实现(初始化、出队、入队、取队头元素、判空)
来源:互联网 发布:linux改成英文 编辑:程序博客网 时间:2024/03/29 14:04
<1>链队列#include<stdio.h>#include<malloc.h>//结点的结构体定义typedef int DataType;typedef struct qnode{DataType data;struct qnode *next;}LQNode;//定义头指针和尾指针typedef struct{LQNode *front;LQNode *rear;}LQueue;//初始化链队列void QueueInitiate(LQueue *Q){Q->rear=NULL;Q->front=NULL;}//非空否int QueueNotEmpty(LQueue Q){if(Q.front == NULL)return 0;else return 1;}//入队列void QueueAppend(LQueue *Q,DataType x){LQNode *p;p=(LQNode *)malloc(sizeof(LQNode));p->data=x;p->next=NULL;if(Q->rear!=NULL) Q->rear->next=p;Q->rear=p;if(Q->front == NULL) Q->front=p;}//出队列int QueueDelete(LQueue *Q,DataType *d){LQNode *p;if(Q->front == NULL){printf("队列已空无数据元素出队列!\n");return 0;}else{*d=Q->front->data;p=Q->front;Q->front=Q->front->next;if(Q->front == NULL) Q->rear=NULL;free(p);return 1;}}//取队头数据元素int QueueGet(LQueue Q,DataType *d){if(Q.front == NULL){printf("队列已空无数据元素出队列!\n");return 0;}else{*d = Q.front->data;return 1;}}int main(){LQueue Q;int x;QueueInitiate(&Q);QueueAppend(&Q,10);QueueAppend(&Q,20);QueueAppend(&Q,30);QueueGet(Q,&x);printf("%d\n",x);QueueDelete(&Q,&x);printf("%d\n",x);QueueGet(Q,&x);printf("%d\n",x);return 0;}<2> 循环队列#include<stdio.h>#define MaxQueueSize 100//结构体定义typedef int DataType;typedef struct{DataType queue[MaxQueueSize];int rear;int front;int count;}SeqCQueue;//初始化void QueueInitiate(SeqCQueue *Q){Q->rear = 0;Q->front = 0;Q->count = 0;}//非空否int QueueNotEmpty(SeqCQueue Q){if(Q.front != 0)return 1;elsereturn 0;}//入队列int QueueAppend(SeqCQueue *Q,DataType x){if(Q->count > 0 && Q->rear == Q->front){printf("队列已满无法插入!\n");return 0;}else{Q->queue[Q->rear]=x;Q->rear = (Q->rear + 1) % MaxQueueSize;Q->count++;return 1;}}//出队列int QueueDelete(SeqCQueue *Q,DataType *d){if(Q->count == 0){printf("队列已空无数据元素出队列!\n");return 0;}else {*d = Q->queue[Q->front];Q->front = (Q->front+1)%MaxQueueSize;Q->count--;return 1;}}//取队头数据元素int QueueGet(SeqCQueue Q,DataType *d){if(Q.count == 0){printf("队列已空无数据元素可取\n");return 0;}else{*d = Q.queue[Q.front];return 1;}}int main(){SeqCQueue Q;int x;QueueInitiate(&Q);QueueAppend(&Q,10);QueueAppend(&Q,20);QueueAppend(&Q,30);QueueGet(Q,&x);printf("%d\n",x);QueueDelete(&Q,&x);printf("%d\n",x);QueueGet(Q,&x);printf("%d\n",x);return 0;}
2 0
- 链队列、循环队列的实现(初始化、出队、入队、取队头元素、判空)
- 循环顺序队列(初始化、入队、出队、判空)
- 链队列的初始化、出队、入队、取队头元素、判空
- 顺序循环队列 初始化、出队、入队、取队头元素、判空
- 链队列和循环队列的表示与实现-初始化、判空、求长、入队、出队、遍历、求头、求尾、清队、毁队
- C++实现普通队列,循环队列的基本操作(初始化,入队,出队,获取队列首元素等)
- 链对列初始化/入队列/出队列/判空
- 【C++】容器适配器实现队列Queue的各种功能(入队、出队、判空、大小、访问所有元素等)
- C语言实现循环队列基本操作(初始化、判断队空、入队、出队)
- 链队列的初始化、入队、出队等操作实现
- 循环队列的初始化、入队、出队等基本操作
- 顺序队列初始化/入队/出队列/判断队空
- 链队列的建立、判空、入队、出队、求长、访头、清空和销毁
- 链队列的建立、判空、入队、出队、求长、访头、清空和销毁
- 链队列的建立、判空、入队、出队、求长、访头、清空和销毁
- 采用顺序存储实现循环队列的初始化、入队、出队操作。
- 链队列的初始化、入队、出队及打印(数据结构)
- (六)循环顺序队列的初始化、入队列、出队列
- Scala之 闭包和柯里化
- Redis sharding方案
- WebStrom2017.1安装破解汉化
- Flickable弹动效果与Flipable翻转效果
- 全局变量、局部变量、静态局部变量、静态全局变量、外部变量、外部函数和静态函数
- 链队列、循环队列的实现(初始化、出队、入队、取队头元素、判空)
- 认知计算与深度学习
- Redis集群动态增删节点
- 判定Java源文件名称
- android学习进阶之路!
- python 操作符**与*的用法
- 一篇关于正则的学习笔记
- 计算机网络之面试常考
- Java反射原理