队列的实际了解

题目描述:将一些数字“排队”,每次从前面拿两个,第一个扔掉,第二个放到尾部,按照扔掉的顺序,求把这些扔掉的数连在一起的数字序列。

输入: 631758924

输出:615947283

#include<iostream>
using namespace std;
struct queue{
    int data[100];//队列主体,用来存储内容 
    int head;//队首
    int tail;//队尾 
};
int main()
{
struct queue q;
int i;
//初始化队列 
q.head=1;
q.tail=1;
for(i=1;i<=9;i++)
{
    //依次向队列插入9个数
    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++; 
    }
 } 
 //队列是一种特殊的线性结构,他只允许在队列的首部进行删除操作,称为“出队”
 //在队列的尾部进行插入操作,称为入队,head用来记录队列的队首(即第一位),
 //tail用来记录队列的队尾(即最后一位)的下一个位置,之所以是下一位,是因为当队列中
 //只剩下一个元素时,队首和队尾重合会带来一些麻烦。在这里规定队首和队尾重合时,队列为空。 

 

posted on 2020-05-06 17:36  YovM_21  阅读(174)  评论(0编辑  收藏  举报

导航