主题:急需解决的线性表问题
原题:
假定线性表La的类型为struct List,元素类型ElemType为int,请写出该主函数的程序。
void main()
{
int i;
struct List La;
int a[]={48,26,57,34,62,79};
InitList(&La,5);
for(i=0;i<6;i++)
InsertFirstList(&La,a[i]);
TraverseList(&La);
}
我编译的程序是:
#include<stdio.h>
#include<stdlib.h>
typedef int ElemType;
struct List {
ElemType *list;
int size;
int MaxSize;
};
void InitList(struct List *L,int ms);
void InsertFirstList(struct List *L,ElemType x);
void againMalloc(struct List *L);
void TraverseList(struct List *L);
void InitList(struct List *L,int ms)
{
if(ms<=0) {printf("ms值非法!\n"); exit(1);}
L->MaxSize=ms;
// L->list=malloc(ms*sizeof(ElemType));
if(!L->list) {
printf("动态存储分配失败!\n");
exit(1);
}
L->size=0;
}
void InsertFirstList(struct List *L,ElemType x)
{
int i;
if(L->size==L->MaxSize)
// againMalloc(L);
for(i=L->size-1;i>=0;i--)
L->list[i+1]=L->list[i];
L->list[0]=x;
L->size++;
}
void againMalloc(struct List *L)
{
ElemType *p=(ElemType*)realloc(L->list,2*L->MaxSize*sizeof(ElemType));
if(!p) {
printf("存储空间用完!\n");
exit(1);
}
L->list=p;
L->MaxSize=2*L->MaxSize;
}
void TraverseList(struct List *L)
{
int i;
for(i=0;i<L->size;i++)
printf("%d",L->list[i]);
printf("\n");
}
void main()
{
int i;
struct List La;
int a[]={48,26,57,34,62,79};
InitList(&La,5);
for(i=0;i<6;i++)
InsertFirstList(&La,a[i]);
TraverseList(&La);
}
编译成功,但是不能运行,不知是什么原因?急需高手帮助解决该题。
假定线性表La的类型为struct List,元素类型ElemType为int,请写出该主函数的程序。
void main()
{
int i;
struct List La;
int a[]={48,26,57,34,62,79};
InitList(&La,5);
for(i=0;i<6;i++)
InsertFirstList(&La,a[i]);
TraverseList(&La);
}
我编译的程序是:
#include<stdio.h>
#include<stdlib.h>
typedef int ElemType;
struct List {
ElemType *list;
int size;
int MaxSize;
};
void InitList(struct List *L,int ms);
void InsertFirstList(struct List *L,ElemType x);
void againMalloc(struct List *L);
void TraverseList(struct List *L);
void InitList(struct List *L,int ms)
{
if(ms<=0) {printf("ms值非法!\n"); exit(1);}
L->MaxSize=ms;
// L->list=malloc(ms*sizeof(ElemType));
if(!L->list) {
printf("动态存储分配失败!\n");
exit(1);
}
L->size=0;
}
void InsertFirstList(struct List *L,ElemType x)
{
int i;
if(L->size==L->MaxSize)
// againMalloc(L);
for(i=L->size-1;i>=0;i--)
L->list[i+1]=L->list[i];
L->list[0]=x;
L->size++;
}
void againMalloc(struct List *L)
{
ElemType *p=(ElemType*)realloc(L->list,2*L->MaxSize*sizeof(ElemType));
if(!p) {
printf("存储空间用完!\n");
exit(1);
}
L->list=p;
L->MaxSize=2*L->MaxSize;
}
void TraverseList(struct List *L)
{
int i;
for(i=0;i<L->size;i++)
printf("%d",L->list[i]);
printf("\n");
}
void main()
{
int i;
struct List La;
int a[]={48,26,57,34,62,79};
InitList(&La,5);
for(i=0;i<6;i++)
InsertFirstList(&La,a[i]);
TraverseList(&La);
}
编译成功,但是不能运行,不知是什么原因?急需高手帮助解决该题。