嗜血超神 发表于 2021-9-1 14:48:30

队列和栈------《啊哈!算法》

啊哈磊老师的《啊哈!算法》学习记录。
书中写到了一个“解密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]
查看完整版本: 队列和栈------《啊哈!算法》