#include<iostream>
#include<stdlib.h>
#include<malloc.h>
using namespace std;
typedef int ElemType;
typedef int Status;
#define ERROR -1
#define OK 0
typedef struct {
ElemType* base;
int front;
int rear;
}SQueue, * SqQueue;
void InitQueue(SqQueue& Q,int QueSize) {
Q->base = (ElemType*)malloc((QueSize + 1) * sizeof(ElemType));
if (!Q->base) exit(OVERFLOW);
Q->rear = Q->front = 0;
}
void Push(SqQueue& Q, ElemType e, int QueSize) {
Q->base[Q->rear] = e;
Q->rear = (Q->rear + 1) % (QueSize + 1);
}
ElemType Pop(SqQueue& Q, int QueSize) {
ElemType e;
e = Q->base[Q->front];
Q->front = (Q->front + 1) % (QueSize + 1);
return e;
}
void Move(SqQueue& Q, int QueSize, int k) {
ElemType e;
for (int i = 0; i < k; i++) {
e = Pop(Q, QueSize);
Push(Q, e, QueSize);
}
}
void Show(SqQueue Q, int QueSize) {
while (Q->front != Q->rear) {
cout << Q->base[Q->front] << " ";
Q->front = (Q->front + 1) % (QueSize + 1);
}
}
void main() {
SqQueue Q;
Q = (SqQueue)malloc(sizeof(SqQueue));
int QueSize, k;
cin >> QueSize >> k;
InitQueue(Q,QueSize);
ElemType Arr[10];
for (int i = 0; i < QueSize; i++) {
cin >> Arr[i];
Push(Q, Arr[i], QueSize);
}
Move(Q, QueSize, k);
Show(Q,QueSize);
}
数据结构NOJ——11循环右移
最新推荐文章于 2022-09-09 18:00:35 发布