小弟初来乍到,编程菜鸟,求各位帮忙看看程序
想在线性表中插入一元素
#define MAXSIZE 1000 main() { int list[1000],result,i,n,x; printf("\nInput the number:\n"); scanf("%d",&n); printf("\nInput the array!\n"); for (i=0;i<n;i++) scanf("%d",&list[i]); printf("\ninsert the number you want to insert:\n"); scanf("%d",&x); result=sq_insert(list,n,x); {case 0: printf("\ninsert successfully!"); for(i=0;i<n;i++) printf("\n%d\n",list[i]); break; case 1: printf("error"); break; } } int sq_insert(list,*p,int i,q) int list[1000]; int j; if(i<0||i>p+1) { printf("Error"); return 1;} if(j=*p>=n-1) {printf("overflow!") return 1;} for(j<*p;j>=i;j--) list[j+1]=list[j]; list[i]=x; (*p)++; return 0; }
----------------解决方案--------------------------------------------------------
怎么不用函数啊
----------------解决方案--------------------------------------------------------
int sq_insert(list,*p,int i,q)
这不是函数吗?
----------------解决方案--------------------------------------------------------
1.已经定义了宏,在程序中就不要用1000了。这样方便修改。
2.int sq_insert(list,*p,int i,int q)函数应该写在main()函数之前或在main()函数中先声明,后调用。
3.子函数丢了大括号。
我也刚刚学习,可能有说的不对的,请谅解。
----------------解决方案--------------------------------------------------------
还是不能运行啊,哪位高手来指点一下啊
----------------解决方案--------------------------------------------------------
#include "stdio.h"
#define MAXSIZE 1000 int sq_insert(int* p,int i,int q) {
if(i<0) { printf("Error"); return 1; }
if(i>MAXSIZE-1) { printf("overflow!"); return 1; }
for(;i>=0;i--) p[i]=p[i-1]; p[0]=q; return 0;
}
void main() { int list[MAXSIZE],result,i,n,x; printf("\nInput the number:\n"); scanf("%d",&n); printf("\nInput the array!\n"); for (i=0;i<n;i++) scanf("%d",&list[i]); printf("\ninsert the number you want to insert:\n"); scanf("%d",&x); result=sq_insert(list,n,x); switch(result) {case 0: printf("\ninsert successfully!"); for(i=0;i<n+1;i++) printf("\n%d\n",list[i]); break; case 1: printf("error"); break; } } 我不太知道是如何将一个数插入到线形表的,是否是将其插入到数组的第一个位置,你的源程序好像是这个思,如果我理解的正确,上面的程序就可以运行,这是在C++下通过上机验证的,你可以对照一下;要弄清楚函数调用的参数。
----------------解决方案--------------------------------------------------------