SWUST OJ 1101 顺序表中数据的循环移动

swust oj 1101

题目描述

设有长度为n(n>1)的顺序表R,将R中保存的序列循环左移P(0 < P < n)个位置,即将R中的数据由(x0,x1,…,xn-1)变换为(xp,xp+1,…,xn-1,x0,x1,…,xp-1)。如果p值不合法,输出“error!”。

输入

在这里插入图片描述

输出

在这里插入图片描述

样例输入

在这里插入图片描述

样例输出

在这里插入图片描述

源代码

#include<stdio.h>
#include<stdlib.h>
#define maxsize 100
typedef struct sqlist
{
	int data[maxsize];
	int length;
}sqlist;
void Initlist(sqlist *&L)
{
	L=(sqlist *)malloc(sizeof(sqlist));
	L->length=0; 
}
void Greatelist(sqlist *&L,int n)
{
	for(int i=1;i<=n;i++)//这里和一般的建立顺序表的函数之间存在差异
	{
		scanf("%d",&L->data[i]);
	}
	L->length=n;
}
void yidonglist(sqlist *&L,int n)
{
   int c,i;
   int a[100];
   scanf("%d",&c);
   if(c>n||c<1)
   printf("error!");
   else
	{
	  for(i=1;i<=c;i++)
	  {
		a[i]=L->data[i];
 	  }
	  for(i=1;i<=L->length-c;i++)
	  {
		L->data[i]=L->data[i+c];
	  }
	  for(i=L->length-c+1;i<=L->length;i++)
	  {
		L->data[i]=a[i-(L->length-c)];
	  }
	  for(i=1;i<=L->length;i++)//你也可以把这一步再弄一个输出函数
	  {
		printf("%d ",L->data[i]);
	  }
    }
}
int main()
{
	sqlist *L;
	int n;
	scanf("%d",&n);
	Initlist(L);
	Greatelist(L,n);
	yidonglist(L,n);
	return 0;
}
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智慧的大林

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值