自己苦想终于解决了::大家帮我看看错在哪里了,题目也贴出了,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 编辑 ]






