用C语言实现简单链式队列结构
2011-06-11 14:25
531 查看
/* *用链式结构实现的队列称为链队。根据队列的FIFO原则,为了操作上的方便,可以用带头指针font和尾指针rear的单链表来实现队列。链队结构描述: *typedef struct node *{ * valuetype data; * struct node *next; *}QNode; [>链队结点的类型<] *typedef struct *{ * QNode *font, *rear; *}LQueue; [>将头尾指针封装在一起的链队<] * *设q是一个指向链队的指针,即LQueue *q. 各函数的功能如下: *(1)LQueue * Init_LQueue(): 创建并返回一个带头尾结点的空链队 *(2)int Empty_LQueue(LQueue *q): 判断链队是否为空 *(3)void In_LQueue(LQueue *q, valuetype x) : 将数据x压入链队q *(4)int Out_LQueue(LQueue *q, valuetype *x) : 弹出链队q的第一个元素x, 若成功则返回1否则返回0 * By Guv 2011.06.10 */ /*程序代码:*/ #include <stdio.h> #include <malloc.h> typedef int valuetype; typedef struct node { valuetype data; struct node *next; }QNode; typedef struct { QNode *font, *rear; }LQueue; LQueue * Init_LQueue() { LQueue *q; QNode *p; q = (LQueue*)malloc(sizeof(LQueue)); /*申请链队指针*/ p = (QNode*)malloc(sizeof(QNode)); /*申请头尾指针结点*/ p->next = NULL; q->font = q->rear = p; return q; } int Empty_LQueue(LQueue *q) { if(q->font != q->rear) return 0; else return 1; } void In_LQueue(LQueue *q, valuetype x) { QNode *p = (QNode *)malloc(sizeof(QNode)); /*申请新结点*/ p->data = x; p->next = NULL; q->rear->next = p; q->rear = p; } int Out_LQueue(LQueue *q, valuetype *x) { if(Empty_LQueue(q)) return 0; /*空链队*/ else{ QNode *p = q->font->next; *x = p->data; q->font->next = p->next; free(p); if (q->font->next == NULL) q->rear = q->font; return 1; } } int main() { LQueue *queue = Init_LQueue(); for (int i=0;i<10;++i) { In_LQueue(queue, i); } while(!Empty_LQueue(queue)) { int k=0; Out_LQueue(queue, &k); printf("%d ",k); } printf("/n"); return 0; }
相关文章推荐
- 队列(C语言实现,基于链式结构)
- C语言 队列的链式结构的实现与表示 数据结构 队列的实现与表示
- C语言 队列 链式结构 实现
- 数据结构——队列的链式实现(C语言)
- 数据结构之---C语言实现链式队列
- 用C语言实现简单循环队列结构
- 算法:背包,栈,队列的简单实现,链式结构
- 数据结构 - 队列简介 及 1个简单的c语言链式队列代码实现
- 队列的链式结构C语言实现
- 数据结构(严蔚敏)之六——链式队列c语言实现
- 队列的简单实现--C语言
- 使用数组实现的简单队列结构
- 队列(链式结构)的实现
- 线性表——链式结构(c语言实现)
- c语言实现链式队列
- 数据结构.循环队列(C语言实现)
- 数据结构之队列(C语言实现)
- 队列的简单实现--C语言
- Queue--队列(c语言简单实现)
- 链式队列基本功能的简单实现