首页 > 用户发贴区 > 编程问题提问区 > 关于链表的建立与输出
2008
08-31

关于链表的建立与输出

我要做的是通过往末尾添加节点来建立链表,然后在输出,但是有问题,谁帮我看一下


#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);
}


关于链表的建立与输出》有 3 条评论

  1. xcgang 说:

    pr =head =NULL ; 这个存在问题

       if(head==NULL)

       {

          head=p[0];

       }

       else

       {

          while(pr->th!=NULL)

          {

             pr=pr->th;

          }

       }

       pr = head ; // 在这里给pr赋值 即可

       pr->th=p[0];

  2. whos 说:

    还有输出的时候

    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,没有这句的话程序就只循环输出第一个节点的数据。

  3. frisa 说:

    谢谢了,感觉基本知识还理解不够

留下一个回复