一个顺序存储结构的简单线性表之不改变原有顺序的数字插入问题
怎么在线性表原有的几个从小到大排列的数字中插入一个数字,而且不改变原有顺序呢?{:5_94:}以下是我的代码,可以指出哪里有问题,比如说while那里,该怎么改?{:5_92:}
#include<stdio.h>
#define MaxSize 20
typedef int datatype;
typedef struct
{
datatype data;
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=p->data;
p->data=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);
while(z>o.data)
{
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);
}
} 求助各位大神指点一下小弟,小弟刚学数据结构{:5_111:} 在要插入的位置插入,之后的数据都挪后一位 for(j=p.last;j>i;j++)
{ p.data=p.data; }
p.data=x;
p.last++;
页:
[1]