#include #include typedef struct student{ int hum; char nameE20]; char sex; mt age; }LIST; LIST*

admin2013-12-19  43

问题 #include
    #include
    typedef struct student{
    int hum;
    char nameE20];
    char sex;
    mt age;
    }LIST;
    LIST*create((1))
    {  LIST*head=NULL,*newNode,*tail;
    int i=0:
    for(i=0;i    {
    (2)
    printf(“\nlnput the information of student%d(name,hum,sex,age):”,i+1);
    scanf(“%s%d%e%d”,%newNode->name,&newNode->num,&newNode->sex,&newNode->age);
    newNode->next=NULL:
    if(i==0)
    (3)
    else
    tail->next=newNode:
    tail=newNode;
    }
    (4)
    }
    void OutputList(LIST*head)
    {LIST*p=head;
    while(p!=NULL){
    printf(“kn%d%s%c%d”,p->num,p->name,p->sex,p->age;
    (5)
    }
    }
    void main()
    {
    LIST*L:
    L=create(10):
    outputList(L);
    }

选项

答案(1)int n (2)newNoD,E=(LIST*)malloc(sizeof(LIST)) (3)llea(i=newNoD,E (4)return heA,D (5)p=p->next

解析 本程序首先定义了链表结点结构LIST,其中每个结点包括了学号、姓名、性别、年龄。然后建立了一个创建链表的操作函数LIST*create(),从main函数中的L=create(10)可知,第一个空格应填入int n,指明所要创建链表的结点数。
    从程序可以看出,for循环用于创建n个链表结点,在创建结点之前应该为即将创建的结,占、开辟空间,因此第二个空格应填入newNode=(LIST*)malloe(sizeof(LIST))。
    从tail->next=newNode可知,create()函数使用尾插法建立链表,因此tail指针始终指向尾结点,即每插入一个结点到链表末尾,都要令tail指针指向该结点。反之,head指针则是指向第一个结点,因此,当i==0时,heaci=newNode。
    创建链表完成后,应该返回指向链表的第一个结点的指针,因此,第四个空格应填入return head。
    OutputList(LIST*head)用于从链表的第一个结点开始逐个输出链表中的元素,因此,每输出一个元素之后,工作指针p移到下一个结点,因此第五个空格应填入p=p->next。
转载请注明原文地址:https://kaotiyun.com/show/qcal777K
0

最新回复(0)