顺序表初始化问题
IDE:clockblocks
语法没有错误,运行时,运行InitList_Sq函数后出现应用程序错误~为什么?
#include <stdio.h>#define LIST_INIT_SIZE 1#define LISTINCREMENT 1struct SqList{ int *elem; int length;//元素个数 int listsize;//存储空间大小};void InitList_Sq(struct SqList *L){ L->elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int)); L->length=0; L->listsize=1; printf("请为初始化顺序表输入递增有序的整数:\n"); int value; while(scanf("%d",&value)!=EOF)//回车 Ctrl+Z 回车 { if(L->length==L->listsize) { L->elem=(int *)realloc(L->elem,(LIST_INIT_SIZE+LISTINCREMENT)*sizeof(int)); } L->elem[L->length++]=value; }}void Print_Sq(struct SqList *L){ int counter; for(counter=0;counter<L->length;counter++) printf("%d ",L->elem[counter]); printf("\n");}#include <malloc.h>#include <string.h>#include <stdio.h>#define LIST_INIT_SIZE 1#define LISTINCREMENT 1struct SqList{ int *elem; int length;//元素个数 int listsize;//存储空间大小};void InitList_Sq(struct SqList *L){ L->elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int)); L->length=0; L->listsize=1; printf("请为初始化顺序表输入递增有序的整数:\n"); int value; while(scanf("%d",&value)!=EOF)//回车 Ctrl+Z 回车 { if(L->length==L->listsize) { L->elem=(int *)realloc(L->elem,(L->length+LISTINCREMENT)*sizeof(int));//mark } L->elem[L->length]=value;//mark L->length+=LISTINCREMENT;//mark }}void Print_Sq(struct SqList *L){ int counter; for(counter=0;counter<L->length;counter++) printf("%d ",L->elem[counter]); printf("\n");}int main(){ struct SqList L; InitList_Sq(&L); Print_Sq(&L); system("pause");}
[解决办法]
to楼上
你的指针很野……
L都没有分配空间╮(╯_╰)╭
[解决办法]
void Print_Sq(struct SqList *L)
{
int counter;
for(counter=0;counter<L->length;counter++)
printf("%d ",L->elem[counter]);
printf("\n");
}
void main()
{
InitList_Sq();
Print_Sq(L);
}