首页 > 代码库 > 算法8---队列及其实现
算法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 do113 {114 scanf("%s%d",data.name,&data.age);115 if (strcmp(data.name,"0")==0)116 {117 break;118 }119 else120 {121 inqueue(queue,data);122 }123 }while(1);124 125 do126 {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---队列及其实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。