初学链表(分析建立学生信息链表)

本题要求实现一个将输入的学生成绩组织成单向链表的简单函数。

初学链表(分析建立学生信息链表)_第1张图片

#include
#include
#include

struct stud_node {
     int    num;
     char   name[20];
     int    score;
     struct stud_node *next;
};
struct stud_node *head, *tail;

void input();

int main()
{
    struct stud_node *p;
    
    head = tail = NULL;
    input();
    for ( p = head; p != NULL; p = p->next )
        printf("%d %s %d\n", p->num, p->name, p->score);

    return 0;
}

void input()
{
    struct stud_node* pf;  //首先建立一个自由变量pf
    int x = 0;
    scanf("%d",&x);
    while(x)
    {
        pf = (struct stud_node*)malloc(sizeof(struct stud_node));//建立一个结构体,将结构体的地址传给pf
        pf->num = x;将pf指向的结构体中的num赋成x
        scanf("%s %d",pf->name,&pf->score);
        pf->next = NULL;  保证最后是NULL
        if( head == NULL )
        {
            head = pf;
        }
        else
        {
            tail->next = pf;
        }


        tail = pf;

该代码必须要明白:开始时,head==tail 的, 并且都是NULL

红色的是难点:首先head是NULL,进入第一个if , 将head赋成pf , tail赋成pf,

之后将head的next指向pf的数据域,并且将tail赋成pf 之后便是循环

        scanf("%d",&x);
    }
}

你可能感兴趣的:(链表,数据结构)