首页 > 代码库 > 数据结构概述<4>队列
数据结构概述<4>队列
队列也是一种比较常用的数据结构,和栈不同的地方在于它是先进先出的,就像我们平时的排队一样。
由于队列和栈非常相似,就不详细讲述概念了,可以参考上一篇博客数据结构概述<3>栈。
和栈一样,在这里直接给出队列的接口(queue.h),以及接口的数组实现(queue1.c)和链表实现(queue2.c)。分别如下:
//queue.h void queue_init(int); int queue_empty(); void queue_put(int); int queue_get();
//queue1.c #include <stdlib.h> #include <stdio.h> static int *q; static int N,head,tail; void queue_init(int maxN) { q = malloc((maxN + 1) * sizeof(int)); N = maxN + 1; head = N; tail = 0; } int queue_empty() { return head % N == tail; } void queue_put(int item) { if (tail == head % N) { printf("error:overflow\n"); } q[tail++] = item; tail = tail % N; } int queue_get() { head = head % N; return q[head++]; }
//queue2.c #include <stdlib.h> typedef struct queuenode* link; struct queuenode { int item; link next; }; static link head,tail; link NEW(int item,link next) { link x = malloc(sizeof *x); x->item = item; x->next = next; return x; } void queue_init(int maxN) { head = NULL; } int queue_empty() { return head == NULL; } void queue_put(int item) { if (head == NULL) { head = (tail = NEW(item,head)); return; } tail->next = NEW(item,tail->next); tail = tail->next; } int queue_get() { int item = head->item; link t = head->next; free(head); head = t; return item; }
数据结构概述<4>队列
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。