[NOJ]数据结构 NO.11循环右移
#include<iostream>
using namespace std;
typedef struct node
{
int data;
struct node *next;
}Linkquenode;
typedef struct
{
Linkquenode *front;
Linkquenode *rear;
}Linkque;
int init(Linkque *q)
{
q->front=new Linkquenode;
if(q->front!=NULL)
{
q->rear=q->front;
q->front->next=NULL;
return 1;
}
else return 0;
}
void enterque(Linkque *q,int a)
{
Linkquenode *t;
t=new Linkquenode;
t->data=a;
t->next=NULL;
q->rear->next=t;
q->rear=t;
}
int delque(Linkque *q,int *x)
{
Linkquenode *t;
if(q->rear==q->front) return 0;
t=q->front->next;
q->front->next=t->next;
if(q->rear==t) q->rear=q->front;
*x=t->data;
delete t;
}
int main()
{
int n,k;
cin>>n>>k;
int i,a;
Linkque *q;
int *x=new int;
q=new Linkque;
init(q);
for(i=0;i<n;i++)
{
cin>>a;
enterque(q,a);
}
for(i=0;i<n-k;i++)
{
delque(q,x);
enterque(q,*x);
}
for(i=0;i<n;i++)
{
delque(q,x);
cout<<*x<<" ";
}
return 0;
}