|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
怎么在线性表原有的几个从小到大排列的数字中插入一个数字,而且不改变原有顺序呢?
以下是我的代码,可以指出哪里有问题,比如说while那里,该怎么改?
#include<stdio.h>
#define MaxSize 20
typedef int datatype;
typedef struct
{
datatype data[MaxSize];
int last;
}sqlist;
int insertlistsq(int i,datatype x,sqlist *p)
{
int j;
if((*p).last>MaxSize)
{printf("溢出错误!\n");
return(0);
}
else if((i<1)||(i>p->last+1))
{
printf("该位置不存在!\n");
return(0);
}
else
{ for(j=p->last-1;j>=i-1;j--)
p->data[j+1]=p->data[j];
p->data[i-1]=x;
p->last=p->last+1;
return(1);
}
}
int main()
{
int m,c,a,h=0;
datatype z=5;
sqlist o={0,1,2,3,4,6,7,8,9,10};
o.last=10;
printf("打印现有原线性表元素\n");
for(a=0;a<o.last;a++)
printf("%3d\n",o.data[a]);
while(z>o.data[h])
{
h=h+1;
}
m=h+1;
c==insertlistsq(m,z,&o);
if(c==0)
printf("error");
else
{
printf("打印插入后的线性表\n");
for(a=0;a<o.last;a++)
printf("%3d\n",o.data[a]);
}
} |
|