码迷,mamicode.com
首页 > 其他好文 > 详细

数据结构之队列c代码实现

时间:2017-08-05 21:15:15      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:结构   源码   ret   type   eof   ini   data   指针   .com   

一学期的数据结构,总不能毫无收获吧,因为书上的很多代码并不能实现,我一个编程小白可怎么过呢,难得假期有时间,于是我寻求度娘,从四面八方找了些可以编译通过的源码,这一次是队列,后面我还会逐渐补充,如果有什么差错,欢迎大佬们来留言啊。

交一下代码:

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #define QUEEN_SIZE 50
 4 
 5 typedef struct SeqQueue
 6 {
 7     int data[QUEEN_SIZE];
 8     int front;
 9     int rear;
10 }Queue;
11 
12 Queue *initQueue()
13 {
14     Queue *q=(Queue*)malloc(sizeof(Queue));
15     if(q==NULL)
16     {
17         printf("malloc failed!");
18         exit(-1);
19 
20     }
21     q->front = 0;
22     q->rear = 0;
23     return q;
24 }
25 int IsFull(Queue *q)
26 {
27     return ((q->rear+1)%QUEEN_SIZE == q->front);
28 }
29 int IsEmpty(Queue *q)
30 {
31     return (q->rear == q->front);
32 }
33 void EnQueue(Queue *q,int n)
34 {
35     if(IsFull(q))
36     {
37         return;
38     }
39     q->data[q->rear] = n;
40     q->rear = (q->rear+1)%QUEEN_SIZE;
41 }
42 int Dequeue(Queue *q)
43 {
44    if(IsEmpty(q))
45         return 0;
46     int temp=q->data[q->front];
47     q->front = (q->front+1)%QUEEN_SIZE;
48     return temp;
49 }
50 int main()
51 {
52     Queue *q = initQueue();
53     int i;
54     for(i=0;i<10;i++)
55     {
56         EnQueue(q,i);
57     }
58     while(!IsEmpty(q))
59     {
60         int data=Dequeue(q);
61         if(IsEmpty(q))
62             printf("%d",data);
63         else
64         printf("%d-> ",data);
65     }
66 }

队列嘛,先进先出,添加元素时,先给rear赋值,然后移动向后rear,减少元素时,也是先赋值,再移动front指针,队列为空时rear==front,队列满时(rear+1)%MAXSIZE== front。

好了,附一张运行结果。技术分享

 

数据结构之队列c代码实现

标签:结构   源码   ret   type   eof   ini   data   指针   .com   

原文地址:http://www.cnblogs.com/2206411193qzb/p/7291301.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!