返回首页
当前位置: 主页 > 网络编程 > 其他实例教程 >

用C语言实现简单链式队列结构-链式队列

时间:2012-02-16 23:34来源:知行网www.zhixing123.cn 编辑:麦田守望者

1./*
2. *用链式结构实现的队列称为链队。根据队列的FIFO原则,为了操作上的方便,可以用带头指针font和尾指针rear的单链表来实现队列。链队结构描述:
3. *typedef struct node
4. *{
5. * valuetype data;
6. * struct node *next;
7. *}QNode; [>链队结点的类型<]
8. *typedef struct
9. *{
10. * QNode *font, *rear;
11. *}LQueue; [>将头尾指针封装在一起的链队<]
12. *
13. *设q是一个指向链队的指针,即LQueue *q. 各函数的功能如下:
14. *(1)LQueue * Init_LQueue(): 创建并返回一个带头尾结点的空链队
15. *(2)int Empty_LQueue(LQueue *q): 判断链队是否为空
16. *(3)void In_LQueue(LQueue *q, valuetype x) : 将数据x压入链队q
17. *(4)int Out_LQueue(LQueue *q, valuetype *x) : 弹出链队q的第一个元素x, 若成功则返回1否则返回0
18. * By Guv 2011.06.10
19. */
20.
21./*程序代码:*/
22.
23.#include <stdio.h>
24.#include <malloc.h>
25.
26.typedef int valuetype;
27.
28.typedef struct node
29.{
30. valuetype data;
31. struct node *next;
32.}QNode;
33.typedef struct
34.{
35. QNode *font, *rear;
36.}LQueue;
37.
38.LQueue * Init_LQueue()
39.{
40. LQueue *q;
41. QNode *p;
42. q = (LQueue*)malloc(sizeof(LQueue)); /*申请链队指针*/
43. p = (QNode*)malloc(sizeof(QNode)); /*申请头尾指针结点*/
44. p->next = NULL;
45.
46. q->font = q->rear = p;
47. return q;
48.}
49.
50.int Empty_LQueue(LQueue *q)
51.{
52. if(q->font != q->rear) return 0;
53. else return 1;
54.}
55.
56.void In_LQueue(LQueue *q, valuetype x)
57.{
58. QNode *p = (QNode *)malloc(sizeof(QNode)); /*申请新结点*/
59. p->data = x;
60. p->next = NULL;
61. q->rear->next = p;
62. q->rear = p;
63.}
64.
65.int Out_LQueue(LQueue *q, valuetype *x)
66.{
67. if(Empty_LQueue(q)) return 0; /*空链队*/
68. else{
69. QNode *p = q->font->next;
70. *x = p->data;
71. q->font->next = p->next;
72. free(p);
73. if (q->font->next == NULL)
74. q->rear = q->font;
75.
76. return 1;
77. }
78.}
79.
80.int main()
81.{
82. LQueue *queue = Init_LQueue();
83. int i;
84. for (i=0;i<10;++i)
85. {
86. In_LQueue(queue, i);
87. }
88. while(!Empty_LQueue(queue))
89. {
90. int k=0;
91. Out_LQueue(queue, &k);
92. printf("%d ",k);
93. }
94. printf("\n");
95. return 0;
96.}

------分隔线----------------------------
标签(Tag):链式队列
------分隔线----------------------------
推荐内容
猜你感兴趣