2767 - 队列操作

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

输入数据,建立一个队列,例如:ABCDE,其中队首元素为A。对这个队列进行如下四个操作:

1. 输出队首元素。(输出,不是出队)

2. 把队首元素插入到队尾。

3. 删除队首元素。(出队)

4. 再次删除队首元素。(出队)

直到队列成为空队列为止。

例如:ABCDE分别进行操作为 1.  输出A.  2。  ABCDEA   3. BCDEA    4. CDEA

题目输入

第一行:元素的个数。

第二行:输入队列数据元素。

题目输出

按规定完成上述四项操作,输出序列。

输入/输出样例

输入格式

5
ABCDE

输出格式

ACECC

C语言解答

#include<stdio.h>
#define  TRUE 1
#define  FALSE 0

#define MAXSIZE 50  /*队列的最大长度*/
typedef char QueueElementType ;
typedef struct
{
	QueueElementType  element[MAXSIZE];  /* 队列的元素空间*/
	int front;  /*头指针指示器*/
	int rear;  /*尾指针指示器*/
}SeqQueue;


/*初始化操作*/
void InitQueue(SeqQueue *Q)
{  
	/* 将*Q初始化为一个空的循环队列 */
	Q->front=Q->rear=0;
}

/*入队操作*/
int EnterQueue(SeqQueue *Q, QueueElementType x)
{  
	/*将元素x入队*/
	if((Q->rear+1)%MAXSIZE==Q->front)  /*队列已经满了*/
		return(FALSE);
	Q->element[Q->rear]=x;
	Q->rear=(Q->rear+1)%MAXSIZE;  /* 重新设置队尾指针 */
	return(TRUE);  /*操作成功*/
}

/*出队操作*/
int DeleteQueue(SeqQueue *Q, QueueElementType *x)
{ 
	/*删除队列的队头元素,用x返回其值*/
	if(Q->front==Q->rear)  /*队列为空*/
		return(FALSE);
	*x=Q->element[Q->front];
	Q->front=(Q->front+1)%MAXSIZE;  /*重新设置队头指针*/
	return(TRUE);  /*操作成功*/
}

int GetHead(SeqQueue *Q, QueueElementType *x)
{ 
	/*提取队列的队头元素,用x返回其值*/
	if(Q->front==Q->rear)  /*队列为空*/
		return(FALSE);
	*x=Q->element[Q->front];
	return(TRUE);  /*操作成功*/
}

int IsEmpty(SeqQueue *Q)
{ 
	/*提取队列的队头元素,用x返回其值*/
	if(Q->front==Q->rear)  /*队列为空*/
		return(TRUE);
	else
		return(FALSE);  /*操作成功*/
}


int main()
{
	SeqQueue Q;
	InitQueue(&Q);
	char ch[20];
	int n;
	scanf("%d",&n);
	scanf("%s",ch);
	for (int i=0;i<n;i++)
	{
		//scanf("%c",&ch);
		EnterQueue(&Q,ch[i]);
	}
	while (IsEmpty(&Q)==FALSE)
	{
		char chin;
		GetHead(&Q,&chin);
		char chout;
		printf("%c",chin);
		EnterQueue(&Q,chin);
		DeleteQueue(&Q,&chout);
		DeleteQueue(&Q,&chout);
	}
	/*for (int i=0;i<n;i++)
	{
		char ch1;
		DeleteQueue(&Q,&ch1);
		printf("%c",ch1);
	}*/
	return 1;
}

C++解答

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<queue>

using namespace std;

int main()
{
	queue<char>c;
	int n;
	cin>>n;
	for(int i=1;i<=n;++i)
	{
		char a;
		cin>>a;
		c.push(a);
	}
	while(c.size()!=0)
	{
		char a;
		a=c.front();
		c.push(a);
		c.pop();
		c.pop();
		cout<<a;
	}
	return 0;
}