#include #include struct node { int hum; struct node*next; }; struct node*create(struct node*head)

admin2013-12-19  42

问题 #include
    #include
    struct node
    {
    int hum;
    struct node*next;
    };
    struct node*create(struct node*head)
    {
    struct node*p1,*p2;
    p1=p2=(struct node*)malloc(sizeof(struct node));
    p1->next=NULL;
    while(p1->num>0)
    {
    if(head==NULL)
    (1)
    else
    (2)
    p2一p1;
    p1=(struct node*)malloc(sizeof(struct node)):
    (3)
    }
    return head;
    }
    void print(struct node*head)
    {
    struct node*temp;
    (4)
    while(temp!=NULL)
    {
    printf(“%d”,(5));
    temp=temp->next;
    }
    }
    main()
    {
    struct node*create();
    void print();
    struct node*head;
    head=NULL;
    head=create(head);
    print(head);
    }

选项

答案(1)heA,D=p1 (2)p2->next=p1 (3)scanf(“%d”,&p1->num) (4)temp=heA,D (5)temp->num

解析 本程序声明了一个结点结构node(包括一个数据域和一个指向后继结点的指针)和一个建立链表的函数create(),一个链表输出函数print(),此外还包括了一个main()函数。
    本程序中的create()函数使用尾插法创建链表,即将输入的结点插入到上一个输入的结点之后,直到输入所有的结点完为止。在建立链表时,若链表为空,则令头指针指向第一个输入的结点,因此,第一个空格填入head=p1;若输入的不是第一个结点,则将它插入到最后一个结点,因此第二个空格填入p2->next=p1。
    从while(p1->num>0)可以看出,create()方法中应该有一个输入结点数据域的语句,因此,第三个空格应填入scanf(“%d”,&p1->num)。
    输出函数print()将链表从第一个结点开始逐个输出,直到输出完整个链袁的结点为止。从while(temp!=NULL)可以看出,temp为工作指针,因此输出之前应将头指针赋予temp,因此第四个空格应填入temp=head。
    printf用于输出结点数据,因此第五个空格应填入temp->num。
    需要注意的是,在链表的创建过程中,链表的头指针是非常重要的参数。因为对链表的输出和查找都要从链表的头指针开始,所以链表创建成功后,要返回链表头结点的地址,即头指针。
转载请注明原文地址:https://kaotiyun.com/show/dqal777K
0

最新回复(0)