<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont-阿里云开发者社区

开发者社区> 开发与运维> 正文

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont

简介: c++中的STL是非常好用的。这里使用数组的形式或结构体的形式加深理解。 首先,介绍数组的形式,,将“6 3 1 7 5 8 9 2 4”这 9个数分别写在 9张便签上模拟这样的规则,规则是这样的:首先将第 1个数删除,紧接着将第 2个数放到 这串数的末尾,再将第 3个数删除并将第 4个数放到这串数的末尾,再将第 5个数删除…… 直到剩下后一个数,将后一个数也删除。
  • c++中的STL是非常好用的。这里使用数组的形式或结构体的形式加深理解。
  • 首先,介绍数组的形式,,将“6 3 1 7 5 8 9 2 4”这 9个数分别写在 9张便签上模拟这样的规则,规则是这样的:首先将第 1个数删除,紧接着将第 2个数放到 这串数的末尾,再将第 3个数删除并将第 4个数放到这串数的末尾,再将第 5个数删除…… 直到剩下后一个数,将后一个数也删除。
  • 引入两个整型变量 head 和 tail。head 用来记录队列的队首(即第一位), tail 用来记录队列的队尾(即后一位)的下一个位置。你可能会问:为什么 tail 不直接记 录队尾,却要记录队尾的下一个位置呢?这是因为当队列中只剩下一个元素时,队首和队尾重合会带来一些麻烦。我们这里规定队首和队尾重合时,队列为空。
  • 其次,使用结构体的形式,定义一个结构体类型。

  • 代码:

 #include<iostream>
using namespace std;
/*这是第一种用数组的形式;
int main(){
    int p[102]={0,6,3,1,7,5,8,9,2,4},head,tail;
    int i;
     head=1;
     tail=10;
     while(head<tail){
        cout<<p[head]<<" ";
        head++;
        p[tail]=p[head];
        tail++;
        head++;
     }
     return 0;
}
*/
//以下是结构体类型写的:
struct queue{
  int data[100];
  int head;
  int tail;
};
int main(){
    struct queue q;
     q.head=1;
     q.tail=1;
    for(int i=1;i<=9;i++){
        cin>>q.data[q.tail];
        q.tail++;
    }
    while(q.head<q.tail){
        cout<<q.data[q.head]<<" ";
        q.head++;
        q.data[q.tail]=q.data[q.head];
        q.tail++;
        q.head++;
    }
    return 0;
}
 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章