求前辈指教……
/*已知顺序表La中数据元素按非递减有序排列,试写一个算法,将x插入到La的合适位置,保持该表的有序性*/
#include<stdio.h>
#define Maxsize 10
typedef struct
{
int v[Maxsize];
int len;
}sqlist;
int in(sqlist * L,int x)
{
int j,i;
//遍历数组,查找比所插入的数大的数
for(i=0;i<=(*L).len;i++)
{
if(x<=(*L).v[i])
break;//找到则跳出循环,找到的i就是新输入的数的位置
}
for(j=(*L).len-1;j>=i;j--)//从最后一个数开始,依次往后面移数,空出i的位置
{
(*L).v[i+1]=(*L).v[j];
}
(*L).v[i]=x;//将新输入的数放到i的空位上
(*L).len=(*L).len+1;//数组长度加1
return(1);
}
main()
{
int i,value;
sqlist a;
a.len=5;
for(i=0;i<5;i++)
a.v[i]=i+1;//创建一个升序排列的数组,元素为5个
scanf("%d",&value); //输入任意的一个数,将其插入数组
if(in(&a,value))//调用函数进行插入
for(i=0;i<a.len;i++)//输出插入后的新数组
printf("%d\n",a.v[i]);
else
printf("wrong");
}
帮我看看这个程序吧……我都不知道错在哪了,但是运行出来老不对
单步调试也不会看……求前辈指教
[解决办法]
for(i=0;i<(*L).len;i++)
{
if(x<=(*L).v[i])
break;//找到则跳出循环,找到的i就是新输入的数的位置
}
for(j=(*L).len-1;j>=i;j--)//从最后一个数开始,依次往后面移数,空出i的位置
{
(*L).v[j+1]=(*L).v[j];
}
[解决办法]
#include "stdafx.h"#include<stdio.h>#include <iostream> using namespace std;#define Maxsize 10typedef struct{ int v[Maxsize]; int len;}sqlist;sqlist a;int in(sqlist * L,int x){ int j,i; //遍历数组,查找比所插入的数大的数 for(i=0;i<=L->len;i++) { if(x<=L->v[i]) break;//找到则跳出循环,找到的i就是新输入的数的位置 } for(j=L->len;j>=i;j--)//从最后一个数开始,依次往后面移数,空出i的位置 { L->v[j]=L->v[j-1]; } L->v[i]=x;//将新输入的数放到i的空位上 L->len+=1;//数组长度加1 return(1);}int main(){ int i,value; a.len=5; for(i=0;i<5;i++) a.v[i]=i+1;//创建一个升序排列的数组,元素为5个 scanf("%d",&value); //输入任意的一个数,将其插入数组 if(in(&a,value))//调用函数进行插入 for(i=0;i<a.len;i++)//输出插入后的新数组 printf("%d\n",a.v[i]); else printf("wrong"); system("pause"); return 0;}
[解决办法]
程序已改 有一点问题 如下
#include<stdio.h>#define Maxsize 10typedef struct{ int v[Maxsize]; int len;} sqlist;int in(sqlist * L, int x){ int j, i;//遍历数组,查找比所插入的数大的数 for (i = 0; i <= (*L).len; i++) { if (x <= (*L).v[i]) break;//找到则跳出循环,找到的i就是新输入的数的位置 } for (j = (*L).len - 1; j > i; j--) //从最后一个数开始,依次往后面移数,空出i的位置 { (*L).v[j] = (*L).v[j-1]; //此处有点问题 } (*L).v[i] = x; //将新输入的数放到i的空位上 (*L).len = (*L).len + 1; //数组长度加1 return(1);}int main(){ int i, value; sqlist a; a.len = 5; for (i = 0; i < 5; i++) a.v[i] = i + 1; //创建一个升序排列的数组,元素为5个 scanf("%d", &value); //输入任意的一个数,将其插入数组 if (in(&a, value)) //调用函数进行插入 for (i = 0; i < a.len; i++) //输出插入后的新数组 printf("%d\n", a.v[i]); else printf("wrong"); return 0;}