代码一:
#include<stdio.h>
#include<stdlib.h>
typedef int datatype;
#define MAXLEN 20
typedef struct
{
datatype data[MAXLEN];
int last;
}SeqList;
SeqList* CreatSeqList()
{
int x,i=0;
SeqList P;
P.last=0;
scanf(“%d”,&x);
while(x!=-1)
{
P.data[i]=x;
i++;
P.last++;
scanf(“%d”,&x);
}
return &P;
}
void ShowSeqList(SeqList* L)
{
int i;
for(i=0;i<L->last;i++)
printf(“%d “,L->data[i]);
}
int main()
{
SeqList *L;
L=CreatSeqList();
ShowSeqList(L);
return 1;
}
代码二:
#include<stdio.h>
#include<stdlib.h>
typedef int datatype;
#define MAXLEN 20
typedef struct
{
datatype data[MAXLEN];
int last;
}SeqList;
SeqList* CreatSeqList()
{
int x,i=0;
SeqList *p;
p->last=0;
while(1)
{
scanf(“%d”,&x);
if(x==-1) break;
p->data[i]=x;
i++;
p->last++;
}
return p;
}
void ShowSeqList(SeqList* L)
{
int i;
for(i=0;i<L->last;i++)
printf(“%d “,L->data[i]);
}
int main()
{
SeqList *L;
L=CreatSeqList();
ShowSeqList(L);
return 1;
}
上面这两个代码错哪里了呢?
解决方案
60
#include<stdio.h> #include<stdlib.h> typedef int datatype; #define MAXLEN 20 typedef struct { datatype data[MAXLEN]; int last; }SeqList; SeqList* CreatSeqList() { int x, i = 0; SeqList *P = (SeqList *)malloc(sizeof(SeqList)); P->last = 0; scanf("%d", &x); while (x != -1) { P->data[i] = x; i++; P->last++; scanf("%d", &x); } return P; } void ShowSeqList(SeqList* L) { int i; for (i = 0; i<L->last; i++) printf("%d ", L->data[i]); } int main() { SeqList *L; L = CreatSeqList(); ShowSeqList(L); return 1; }