自己苦想终于解决了::大家帮我看看错在哪里了,题目也贴出了,Segmentation fault:段错误,检查是否有数组越界,指针异常,访问到不应该访问的内存区
程序代码:
Description 有一个线性表需要你实现插入和删除操作。 ins x n:表示在x位置插入整数n。 del x:表示删除x位置上的数据。 show:表示打印出该表中的所有元素。 Input 有多组测试数据。每个测试数据第一行给出操作数M(0<M<50000);之后的M行随机给出操作类型。 Output 输出show的结果,一个show操作的结果占一行。 Sample Input 8 ins 1 50 ins 2 56 ins 2 39 show ins 1 34 show del 2 show Sample Output 50 39 56 34 50 39 56 #include<stdio.h> #define MAXSIZE 100 struct sqllist { int date[MAXSIZE]; int last; }; struct sqllist L; int init_L() { L.last=-1; } int insert_L() { int i,x,j; scanf("%d%d",&i,&x); if(L.last>=MAXSIZE) { printf("表满!\n"); return 0; } if(i<1||i>(L.last+2)) { printf("i的值不对!\n"); return 0; } for(j=L.last;j>=i-1;j--) { L.date[j+1]=L.date[j]; } L.date[i-1]=x; L.last++; return 1; } int delete_L() { int n,m,i,j; i=L.last; scanf("%d",&n); for(j=n;j<=i;j++) L.date[j-1]=L.date[j]; L.last=L.last-1; } int printf_L() { int j; for(j=0;j<L.last;j++) { printf("%d ",L.date[j]); } printf("%d\n",L.date[L.last]); } int main() { int i,n; char m1[10]; init_L(); scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%s",m1); if(strcmp(m1,"ins")==0) { insert_L(); } if(strcmp(m1,"del")==0) { delete_L(); } if(strcmp(m1,"show")==0) { printf_L(); } } }
[ 本帖最后由 zhao72349947 于 2013-3-13 17:52 编辑 ]