2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 数据结构队列的代码实现

数据结构队列的代码实现

时间:2022-06-21 07:46:53

相关推荐

数据结构队列的代码实现

队列是先入先出的,即先入队的数据先出队

下面程序是队列的链式存储结构的实现,具有入队,出队,销毁队列的的功能

程序开头部分

#include <stdio.h>#include <stdlib.h>#define Ok 1#define ERROR 0typedef int QElemType;typedef int Status;typedef struct QNode {QElemType data;struct QNode *next;} QNode, *QueuePtr;typedef struct {QueuePtr front;QueuePtr rear;} LinkQueue;

程序的主题部分

// 初始化队列Status InitQueue(LinkQueue *s) {s->front = s->rear = (QueuePtr) malloc(sizeof(QNode));if (!s->front) {printf("初始化队列错误");exit(-1);}s->front->next = NULL;return Ok;}// 插入到队列Status InsertQueue(LinkQueue *s, QElemType e) {QueuePtr p;p = (QueuePtr) malloc(sizeof(QNode));if (!p) {printf("插入队列失败");exit(-1);}p->data = e;p->next = NULL;s->rear->next = p;s->rear = p;return Ok;}// 元素出队列Status DeQueue(LinkQueue *s, int *e) {QueuePtr p;if (s->front == s->rear) {return ERROR;}p = s->front->next;*e = p->data;s->front->next = p->next;if (s->rear == p) {s->rear = s->front;}free(p);return Ok;}// 销毁队列Status DestoryQueue(LinkQueue *s) {while (s->front) {s->rear = s->front->next;free(s->front);s->front = s->rear;}return Ok;}int main() {int n, tmp, num;QueuePtr s;InitQueue(s);printf("请输入要入队列元素的个数:");scanf("%d", &n);for (int i = 0; i < n; i++) {printf("请输入第 %d 个值:", i + 1);scanf("%d", &tmp);InsertQueue(s, tmp);}for (int j = 0; j < n; j++) {DeQueue(s, &num);printf("%d\t", num);}DestoryQueue(s);return 0;}

程序运行结果:

输入要入队列元素的个数为6,依次输入4,5,6,7,2,3,结果输出为4 5 6 7 2 3

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。