队列和栈------《啊哈!算法》
啊哈磊老师的《啊哈!算法》学习记录。书中写到了一个“解密QQ号”的栗子,大意是:“我们有一组数据,现在把第一个数删除,然后第二个数移动到这组数据的末尾,然后再把第三个数字删除,第四个数移动到这组数据的末尾,最后,我们把删除的数据连起来,就是我们想要的结果。”
这里便用到了队列的知识:
队列的本质是先进先出,先存入的数据先输出。
思路:
先定义一个数组,并初始化这个数组,即 int book= {0,6,3,1,7,5,8,9,2,4};( 此处初始化可以多写了一个 0,用来填充 book,然后在book开始会看起来更直观。)
然后我们可以让后面的元素向前面移动一位,达到覆盖第一个数的目的,引入两个整型变量 head 和 tail。head 用来记录我们队列的队首(即第一位),tail 用来记录我们队列的队尾(即最后一位)的下一个位置。这是因为当队列中只剩下一个元素时,队首和队尾 重合会带来一些贫苦。我们这里规定队首和队尾重合时,队列为空。
#includeint main(){ int book={0,6,3,1,7,5,8,9,2,4},head,tail; head=1; tail=10;//指向队尾的下一个位置 while(head<span class="token operator">
页:
[1]