#include #include struct List { int data; struct List*next: }; typedef struct List node; typedef

admin2014-01-13  35

问题 #include
    #include
    struct List
    {
    int data;
    struct List*next:
    };
    typedef struct List node;
    typedef node*link;
    void main()
    {
    link ptr,head,tail;
    int num,i;
    tail=(1ink)malloc(sizeof(node));
    tail->next=(1);
    ptr=tail;
    printf(“\nplease input data:\n”);
    for(i=0;i<=4;i++)
    {
    scanf(”%d”,(2));
    ptr->data=num;
    head=(1ink)malloc(sizeof(node));
    head->next=(3);
    ptr=head;
    }
    ptr=(4);
    while(ptr!=NULL)
    {
    printf(”the value is 9/6d.\n”,(5));
    ptr=ptr->next;
    }
    }

选项

答案(1)NUII (2)&num (3)ptr (4)head->next (5)ptr->data 本程序实现的功能是:利用尾插法创建一个包含5个数据结点的单链表,然后将这5个结点的数据输出。 程序一开始定义了一个结构体,即结点结构: struct Iist { int data: struct Iist *next: }; 由此可以看出,单链表的每个结点包含了一个数据域和一个指向后继结点的指针域。 在main函数中,首先创建一个结点,令尾指针指向该结点:tail=(1ink)malloc(sizeof(node));由于后面第二甸ptr=ta1令工作指针指向尾结点,可知第一个空填NUII,即将尾结点的指针域置为NULL,tail->rlext—NUII;。 for循环的作用是依次创建5个结点,并为这5个结点的数据域赋值。由ptr->da-ta=num;可知其前一句是用num变量保存输入的整数,则第二个空填&num,即scanf(“%d”,&num);。 由于头指针是指向第一个结点的,因此第三个空填入ptr.即1head->Flext-1)tr;,令头指针一直指向第一个结点的地址。 最后用while循环输出链表中每个结点的数据值,因此在进入while循环之前令工作指针ptr指向第一个结点,即ptr=head->next;,在输出结点数据值时,利用ptr->data取当前指针指向的数据域即可,即printf(“the value is%d.\n”,ptr->data);。

解析
转载请注明原文地址:https://kaotiyun.com/show/fdal777K
0

最新回复(0)