|
我的代码如下:
#include <stdio.h>
#include <malloc.h>
struct sqlist
{
int *base;
int size;
int length;
};
void init(struct sqlist *L);
void insert(struct sqlist *L,int pos,int e);
void main()
{
int i,e,n;
struct sqlist *List=NULL;
init(List);
printf("最多输入%d个数\n",List->size);
printf("输入数据(遇到零则结束):\n");
scanf("%d",&e);
while(e!=0)
{
List->base[list->length]=e;
List->length++;
if(List->length>=List->size)
{
printf("it is enugh\n");
break;
}
scanf("%d",&e);
}
printf("请输入插入位置:");
scanf("%d",&n);
printf("请输入插入数据:");
scanf("%d",&e);
printf("\n插入前,数据为:");
for(i=0;i<List->length;i++)
printf("%d\t ",List->base);
printf("\n");
insert(List,n,e);
printf("插入后,数据为:");
for(i=0;i<List->length;i++)
printf("%d\t ",List->base);
printf("\n");
free(List->base);
}
void init(struct sqlist *L)
{
L->base=(int *)malloc(10*sizeof(int));
L->length=0;
L->size=10;
}
void insert(struct sqlist *L,int pos,int e)
{
int *newbase,i;
if(pos<=0||pos>L->length+1)
{
printf("下标错误!\n");
return;
}
if(L->length==L->size)
{
newbase=(int *)malloc((L->size+2)*sizeof(int));
for(i=0;i<L->length;i++)
newbase=L->base;
L->size+=2;
free(L->base);
L->base=newbase;
}
for(i=L->length-1;i>=pos-1;i--)
L->base[i+1]=L->base;
L->base[pos-1]=e;
L->length++;
}
编译通过了,可运行的时候却出现内存溢出错误。
不解!困惑中!~~~~~~~~~~~~~~~:confused:
望高手指教。3x |
|