为什么无法得到正确的答案啊???}??????
#include<stdio.h>#include<malloc.h>
typedef int datatype;
typedef struct node
{
datatype data;
struct node*next;
}listnode, *linklist;
linklist kong();
void printflist(linklist L);
void headadd(linklist L);
int getlength(linklist L);
int main()
{
linklist L=kong();
headadd(L);
printf("链表数据为:");
printflist(L);
printf("单链表的长度为%d", getlength(L));
return 0;
}
linklist kong()
{
linklist head = (linklist)malloc(sizeof(listnode));
if (head == NULL)
{
printf("error\n");
exit(-1);
}
else
{
head->next = NULL;
return head;
}
}
void headadd(linklist L)
{
linklist s=(linklist)malloc(sizeof(listnode));
int x;
char ch;
if (s == NULL)
{
printf("error");
exit(-1);
}
else
{
do
{
printf("输入数据:\n");
scanf("%d", &x);
s->data = x;
s->next = L->next;
L->next = s;
printf("是否继续添加(y|n):\n");
scanf(" %c", &ch);
}while (ch == 'y' ||ch== 'Y');
s->next = NULL;
}
}
void printflist(linklist L)//将数据输出;
{
linklist p = L->next;
while (p)
{
printf("%d\t", p->data);
p = p->next;
}
}
intgetlength(linklist L)
{
linklist p = L->next;
int i = 0;
while (p )
{
i++;
p = p->next;
}
return i;
} 正确答案是什么啊?
linklist s=(linklist)malloc(sizeof(listnode));
这一句要放到循环里面,否则只分配这一块内存,你循环着往里放数据,会得到想要的结果吗
页:
[1]