链表——单链表的创建

链表:一种常见的数据结构,在链表中每一个元素包括数据部分和指针部分。数据部分用来存放有效元素所包含的数据,而指针部分用来指向下一个元素。

创建一个节点:

struct Student
{
    char Name[10];    //数据部分
    int Number;       //数据部分
    struct Student* PNext;   //指向下一个节点的指针
}

注意:当有新的节点要添加到链表中时,原来最后一个节点的指针将保存新添加的节点地址,而新的节点的指针将指向空(NULL),当添加完成后,新节点将成为链表的最后一个节点。(实际上是尾插法创建链表)

例:动态创建一个链表
步骤分析:
1、初始化一个头节点,即定义一个头指针令其为空。

struct Student* PHead=Null;

这里写图片描述
2、为了插入第一个节点,先定义两个指向结构体的指针变量PEnd、PNew。

struct Student *PEnd,*PNew;   //指针PNew总是指向要创建新的节点的数据域

3、为第一个节点赋予数据

Scanf("%s",&PNew->Name);     //给第一个节点数据域赋值
Scanf("%d",&PNew->Number);

4、插入第一个节点
这里写图片描述

PNew->PNext=PHead;   //将新插入的节点的指针域置空
PEnd=PNew;           //让PEnd指针也指向新插入节点的数据域
PHead=PNew;          //使头指针指向新插入的节点(将新节点的地址赋给头指针)

5、在该节点后再插入新的节点
首先先给数据域赋值

Scanf("%s",&PNew->Name);     
Scanf("%d",&PNew->Number);

接下来将该节点与上一个节点链接起来
这里写图片描述

PNew->PNext=NUll;   //将新插入的节点的指针域置空
PEnd->PNext=PNew;   
PEnd=PNew;          //PEnd再次指向新节点

还要继续插入的话在重复执行上一步骤就好了,可以看出这样就不用担心链表的长度超出范围了。

发布了17 篇原创文章 · 获赞 60 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_36744540/article/details/79889841