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;
}