#include
#include
int buil() //顺序表的建立
{
int *v,n,m;
v=(int *)malloc(m*sizeof(int));
n=0;
}
void insl(int *v,int m, int n, int i, int b)//在第i个元素前插入一个元素
{
int j;
if (n==m) //判断存储空间能否已满
{
printf(“overflow \n”);
return;
}
if(i>n) i=n+1;
if(i<1) i=1;
for(j=n;j>=i;j–)
v[j]=v[j-1];
v[i-1]=b;
n=n+1;
}
void dele(int *v, int m, int n, int i)//删除第i个元素
{
int j;
if(n==0) //线性表为空 ,不能删除
{
printf(“underflow \n”);
return;
}
if((i<1)||(i>n)) //找不到第i个元素
{
printf(“Not this element in the list \n”);
return;
}
for(j=i;j<=n+1;j++)
v[j-1]=v[j];
n=n-1;
}
int main()
{ int *v;
*v=buil();
int m,n,i,b;
insl(v,m,n,i,b);
dele(v,m,n,i);
}
解决方案
10
这个书上和网上都有现成的吧~感觉你都没理解了什么是顺序表,以及顺序表的操作原理~
20
buil函数完全不对。
m没有初始化,直接malloc了m*sizeof(int)的空间
而且函数也没有return
给n赋值成0也毫无意义,根本不会影响到main函数里的n
20
buil中m没有初始化就使用了,主函数中m,n,i,b都没有初始化就使用
20
参数传递是不是正确单步调试到子函数里看一下就知道了。
代码功能归根结底不是别人帮本人看或讲解或注释出来的;而是被本人静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生本人领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。
CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明子函数线性顺序表的建立、插入和删除与主函数之间怎么实现参数的传递!