[NOJ]数据结构 NO.11循环右移

[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++)  //右移k,相当于左移n-k
			{
				delque(q,x);
				enterque(q,*x);
			}
			for(i=0;i<n;i++)     //输出结果
			{
				delque(q,x);
				cout<<*x<<" ";
			}
			return 0;
		}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值