数据结构------队列(C语言实现)

声明:我是看了啊哈雷磊老师的《啊哈!算法》写的博客,以后的以及以前的几篇都是这样子的[嘻嘻]。觉得这本书写的很有意思,就打算记录一下,毕竟从图书馆借的书,以后还给学校,这嘛好的内容我就看不到了。(当学生真好)当然了,内容有些小区别,不是完全一样的。

好了,我先说情景(自编的哈)。小哼和小哈都在上小学5年级,小哼很调皮,不爱学习,小哈,是个女娃娃,学习很认真。一天小哼被爸爸凶了一顿,因为考试成绩不好,小哼注意到了班级里一位叫做小哈的同学,学习很好,每次都考第一。于是就打算要到小哈的qq号方便以后问小哈同学问题。小哈说:“我说一串数字,你把第一个删除,第二个排到这列数字的最后,第三个删除,第四个排到这列数字的最后。。。。。,依次这样。最后剩一个数也要删除,把这些删除的数字依次按照删除顺序排成一列,就是我的qq”.小哼对小哈说:“果然是学霸,膜拜女神”。。。。。。。。

小哼想了想,这不是队列吗?我之前看过编程方面的书。。。我直接写个算法就 出来了。。。。

 1 #include<stdio.h>
 2 int main(void){
 3     int q[102]={0,1,3,5,6,9,4,2,7,8},head,tail;//0是用来填充第一个位置的;
 4     //为神马从1开始,不是从零呢?其实都一样,感觉从1开始比较好理解;嘻嘻!
 5     head=1;
 6     tail=10;
 7     while(head<tail){
 8     printf("%6d\n",q[head]);
 9     head++;
10     q[tail]=q[head];
11     tail++;
12     head++;
13     }
14     return 0;
15 }
View Code

小哼的哥哥大哼看了看就写了个”高档”的程序。。。用到了结构体。

 1 #include<stdio.h>
 2 struct queue{
 3    int data[100];
 4    int head;
 5    int tail;
 6 };//结构体表示队列
 7 int main(void){
 8     struct queue q;
 9     int i;
10     q.head=1;
11     q.tail=1;
12     printf("please  input nine number: \n");
13     for(i=1;i<=9;i++){
14        scanf("%d",&q.data[q.tail]);
15        q.tail++;
16     }
17     while(q.head<q.tail){
18      printf("%6d",q.data[q.head]);
19      q.head++;
20      q.data[q.tail]=q.data[q.head];
21      q.tail++;
22      q.head++;
23     }
24     return 0;
25 }
View Code

好了,就这样。嘻嘻。

posted @ 2017-04-15 11:45  gaoxuerong  阅读(224)  评论(0编辑  收藏  举报