关于数组循环右移的问题!
学习用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);
} 展开
函数如下:
#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);
} 展开
1个回答
展开全部
#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();
}
}
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;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询