7-1 有趣的队列 (20 分)
本题重新定义队列出队的操作:队首出队的数字重新在队尾入队。
例:队列中有1 2 3三个数字,现要求队首出队,则1从队首出队,同时1从队尾入队,队列变成2 3 1。
入队的顺序为1,2,3,4…n,同时给一个二进制字符串,1代表出队操作,0代表入队操作。
输入格式:
在第一行有两个数字n,m(n<=100,n<m),其中n为入队的数字个数,m代表操作数
接下来m行,每行一个数字,1或者0,代表不同的操作
输出格式:
输出操作后队列的每个数字,数字间以空格分隔,最后一个数字后没有空格
输入样例:
5 8
0
0
1
0
1
0
1
0
输出样例:
3 2 4 1 5
#include<stdbool.h>
#include<stdio.h>
#include<assert.h>
#include<malloc.h>
typedef int Data;
typedef struct _Node
{
Data data;
struct _Node* next;
}Node;
typedef struct _LinkQueue
{
int size;
Node* front;
Node* tail;
}LinkQueue;
//创建队列
LinkQueue* createLinkQueue();
//入队
void push(LinkQueue* que, Data val);
//出队
void pop(LinkQueue* que);
//获取队头元素
Data front(LinkQueue* que);
//判空
bool empty(LinkQueue* que

该篇博客介绍了一个有趣的队列操作问题,其中队首元素出队后立即在队尾重新入队。作者通过C语言实现了这个操作,包括创建队列、入队、出队和获取队头元素等函数,并给出了一个示例程序,演示了如何根据给定的入队和出队操作序列来更新队列状态。博客内容主要涉及数据结构和算法的应用。
最低0.47元/天 解锁文章
321

被折叠的 条评论
为什么被折叠?



