算法8---队列及其实现

Posted taoliu_alex

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法8---队列及其实现相关的知识,希望对你有一定的参考价值。

队列及其实现

 

和上一部分关于栈的部分一样,不讲基本知识,直接实现,走你!

队列和栈相似,也包括一些基本的队列的操作,初始化,出队列,入队列,判空,判满,清空等操作。

  1 #include <stdlib.h>
  2 #include <stdio.h>
  3 #include <string.h>
  4 
  5 #define QUEUELEN 15
  6 
  7 typedef struct
  8 {
  9     char name[10];
 10     int age;
 11 }DATA;
 12 
 13 typedef struct
 14 {
 15     DATA data[QUEUELEN];
 16     int head;
 17     int tail;
 18 }queueType;
 19 
 20 queueType *initQueue()
 21 {
 22     queueType *q;
 23     if (q=(queueType *)malloc(sizeof(queueType)))
 24     {
 25         q->head=0;
 26         q->tail=0;
 27         return q;
 28     }
 29     else
 30         return NULL;
 31 }
 32 
 33 
 34 int queueEmpty(queueType *q)
 35 {
 36     int flag;
 37     flag=(q->head==q->tail);
 38     return flag;
 39 }
 40 
 41 int queueFull(queueType *q)
 42 {
 43     int flag;
 44     flag=(q->tail==QUEUELEN);
 45     return flag;
 46 }
 47 
 48 void clearqueue(queueType *q)
 49 {
 50     q->head=0;
 51     q->tail=0;
 52 }
 53 
 54 void freequeue(queueType *q)
 55 {
 56     if (q!=NULL)
 57     {
 58         free(q);
 59     }
 60 }
 61 
 62 int inqueue(queueType *q,DATA data)
 63 {
 64     if (q->tail==QUEUELEN)
 65     {
 66         printf("the queue if full!\n");
 67         return 0;
 68     }
 69     else
 70     {
 71         q->data[q->tail++]=data;
 72         return 1;
 73     }
 74 }
 75 
 76 DATA outqueue(queueType *q)
 77 {
 78     if (queueEmpty(q))
 79     {
 80         printf("empty  queue!\n");
 81         exit(0);
 82     }
 83     else
 84         return q->data[q->head++];
 85 }
 86 
 87 DATA readqueue(queueType *q)
 88 {
 89     if (queueEmpty(q))
 90     {
 91         printf("empty  queue!\n");
 92         exit(0);
 93     }
 94     else
 95         return q->data[q->head];
 96 }
 97 
 98 int queuelength(queueType *q)
 99 {
100     int len;
101     len=q->tail-q->head;
102     return len;
103 }
104 
105 int main()
106 {
107     queueType *queue;
108     DATA data,data1;
109     queue=initQueue();
110     printf("push queue!\n");
111     printf("input name,age to push data!\n");
112     do
113     {
114         scanf("%s%d",data.name,&data.age);
115         if (strcmp(data.name,"0")==0)
116         {
117             break;
118         }
119         else
120         {
121             inqueue(queue,data);
122         }
123     }while(1);
124 
125     do
126     {
127         printf("pop stack operation!\n");
128         data1=outqueue(queue);
129         printf("the out queue data is (%s,%d)\n",data1.name,data1.age);
130     }while(1);
131 
132 
133     freequeue(queue);
134     return 0;
135 
136 }

 

以上是关于算法8---队列及其实现的主要内容,如果未能解决你的问题,请参考以下文章

数据结构队列及其Java代码实现

转载用队列求解迷宫最短路径及其应用(围住神经猫)

Smith-Waterman算法及其Java实现

# Java 常用代码片段

# Java 常用代码片段

[DS+Algo] 004 栈队列及其代码实现