关于数组循环右移的问题!

学习用C语言编程数据结构,编写了一道程序就是将数组循环右移的,可是调试了老半天也没个结果,希望各位大神帮忙修改一下谢谢了。题目要求是用一个数组的。函数如下:#includ... 学习用C语言编程数据结构,编写了一道程序就是将数组循环右移的,可是调试了老半天也没个结果,希望各位大神帮忙修改一下谢谢了。题目要求是用一个数组的。

函数如下:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#define MAXSIZE 1024

typedef int datatype;
typedef struct{
datatype data[MAXSIZE];
int last;
}sequenlist;
sequenlist *L;

//建立顺序表
sequenlist *Create(){
int j;
L=(sequenlist*)malloc(sizeof(sequenlist));
L->last=-1;
for(j=0;j<=L->last;j++){
scanf("%d",&L->data[j]);
L->last++;
}

return L;
}

//建立移动函数把顺序表向右移动i位
int Move(sequenlist *L,int i){
int j,k,p;
k=i%(L->last); // k的值是实际移动的位数
for(j=L->last;j>=0;j--) //先将整个顺序表向后移动
L->data[j+k]=L->data[j];
for(j=L->last;j>=(L->last)-k;j--)
for(p=k;p>=0;p--) //再将最后的几个数字数附给前面的空档
L->data[p]=L->data[j];
return 1;
}

//建立输出函数
void Output(sequenlist *L){
int k;
for(k=0;k<=L->last;k++)
printf("%d",L->data[k]);
printf("\n");
}

void main(){
int s,i,ret;
printf("输入:");
scanf("%d,%d",&s,&i);
L=Create();
ret=Move(L,i);
printf("输出:");
if(ret)
Output(L);
}
展开
 我来答
coinv
推荐于2016-10-08 · TA获得超过410个赞
知道小有建树答主
回答量:775
采纳率:0%
帮助的人:445万
展开全部
#include <stdio.h>

int data[10] ; 声明要移位的数组

void Init_data() 初始化数据内的数据。
{
int i;

for(i= 0;i < 10;i++)
{
data[i] = i;

}

}

void move() 将数组的数据右移一位
{
int temp;

int i;

temp = data[9];

for (i = 9;i > 0 ;i--)
{

data[i] = data[i-1];

}

data[0] = temp;

}

void main()
{
int i,n;

scanf("右移的位数%d",&d);
for( i= 0;i < n; i++)

{

move();

}

}
追问
你这个可以,但是好像不是数据结构中线性表的使用,就是利用一般的数组做到的。麻烦你帮我纠纠错。
追答
//建立顺序表
sequenlist *Create(){
int j;
L=(sequenlist*)malloc(sizeof(sequenlist));
L->last=-1;
for(j=0;jlast;j++){ 这里就错了,循环条件根本不成立
scanf("%d",&L->data[j]);
L->last++;
}

return L;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式