我要做的是通过往末尾添加节点来建立链表,然后在输出,但是有问题,谁帮我看一下
#include <stdio.h>
#include <stdlib.h>
struct am
{
char name[10];
struct am *th;
};
struct am *add(struct am *head)
{
int i=0;
char array[10]={‘\0′};
struct am *pr=head;
struct am *p[10];
for(i=0;i<10;i++)
p[i]=(struct am *)malloc(sizeof(struct am));
if(head==NULL)
{
head=p[0];
}
else
{
while(pr->th!=NULL)
{
pr=pr->th;
}
}
pr->th=p[0];
for(i=0;i<10;i++)
{
p[i]->th=p[i+1];
printf(“输入姓名:\n”);
scanf(“%s”,&p[i]->name);
}
return head;
}
void print(struct am *head)
{
int i;
struct am *pr=head;
for(i=0;i<11;i++)
{
printf(“%s”,pr->name);
}
}
main(void)
{
struct am *head=NULL;
head=add(head);
print(head);
}
>> 本文固定链接: http://www.vcgood.com/archives/2675
pr =head =NULL ; 这个存在问题
if(head==NULL)
{
head=p[0];
}
else
{
while(pr->th!=NULL)
{
pr=pr->th;
}
}
pr = head ; // 在这里给pr赋值 即可
pr->th=p[0];
还有输出的时候
void print(struct am *head)
{
int i;
struct am *pr=head;
for(i=0;i<11;i++)
{
printf(“%s”,pr->name);
}
}
FOR循环中少了pr=pr->th,没有这句的话程序就只循环输出第一个节点的数据。
谢谢了,感觉基本知识还理解不够