声明:我是看了啊哈雷磊老师的《啊哈!算法》写的博客,以后的以及以前的几篇都是这样子的[嘻嘻]。觉得这本书写的很有意思,就打算记录一下,毕竟从图书馆借的书,以后还给学校,这嘛好的内容我就看不到了。(当学生真好)当然了,内容有些小区别,不是完全一样的。
好了,我先说情景(自编的哈)。小哼和小哈都在上小学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 ",q[head]); 9 head++; 10 q[tail]=q[head]; 11 tail++; 12 head++; 13 } 14 return 0; 15 }
小哼的哥哥大哼看了看就写了个”高档”的程序。。。用到了结构体。
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: "); 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 }
好了,就这样。嘻嘻。