标签:
通过题目我们可以看出这篇文章将介绍什么,栈、队列、链表本质上是数据结构中的东西,通过这章的学习能够给今后数据结构的学习打下一点基础。
队列:
我们通过一个简单的谜题来引入队列的概念,给出一串9位的加密QQ号,对于这串数字,删除第一位数字,然后将第二位数字放到这串数字的最后。反复操作,直到这一串数字的所有数字都被删除。在这个过程中,按照数字删除先后顺序排列的9位数字的便是解密后的QQ号,请问解密后的QQ号是多少?
其实从数学原理的角度,这个问题并没有什么难度,非常好理解,但关键在于,如何通过程序来高效的计算呢?
这里便用到队列的概念。我们将这9个数字看成一个有顺序的队并用数组记录,用变量head和tail记录这个队的队首和队尾后面的一个元素(为了方便判断队列为空,将tail指向队尾后面的元素),容易看到,我们对这个含有9个字符串的队列进行的操作本质上就是入队和出队,所谓入队即在队尾后添加一个元素,所谓出队即删除一个头元素。那么我们基于这样一个简单的数据结构,便可以很好的完成上面解密QQ号的模拟运算了。
#include<stdio.h> struct queue { int data[100]; int head , tail; }; int main() { struct queue q; int i; q.head = 1; q.tail = 1; for(i = 1;i <= 9;i++) { scanf("%d",&q.data[q.tail]); q.tail++; } while(q.head < q.tail) { printf("%d",q.data[q.head]); q.head++; q.data[q.tail] = q.data[q.head]; q.tail++; q.head++; } return 0; }
标签:
原文地址:http://www.cnblogs.com/rhythmic/p/5462936.html