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

Posted Constructor

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构之队列c代码实现相关的知识,希望对你有一定的参考价值。

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

交一下代码:

 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代码实现的主要内容,如果未能解决你的问题,请参考以下文章

# Java 常用代码片段

# Java 常用代码片段

数据结构之链式队列的代码实现及有趣应用

数据结构之链式队列的代码实现及有趣应用

数据结构之队列(Java语言描述)

数据结构之栈和队列