【数据结构入门】2.5.2线性表的链式表示和实现(带头结点的单链表定定义)(持续更新ing)

数据结构 手写笔记,希望大家支持哈哈
建议大家 点赞收藏 
配套学习的 数据结构与算法基础(青岛大学-王卓)老师 的课程
可以配合课程一起学习哈 (文章内图片也有部分截取)

这是一些文章中出现可能陌生的词

Lnode 节点(struct Lnode)

Struct 结构

LinkList  指向链表结点的指针( struct Lnode *L)

单链表是由表头唯一确定,因此单链表可以用头指针的名字来命名

若头指针名是 L,则把链表称为表 L

单链表的存储结构

 

typedef struct Lnode {    // 声明结点的类型和指向结点的指针类型

ElemType data;       // 结点的数据域

struct Lnode *next; // 结点的指针域(next 是指向 struct Lnode 类型的指针)

} Lnode, *LinkList;      //LinkList 为指向结构体 Lnode 的指针类型

(Lnote定义一个a节点,a.date/a.next)

 

Lnode:给 struct Lnode 起的小名

*LinkList:给 struct Lnode * 起的小名,代表 “指向链表结点的指针”

 

// 定义数据类型:存学生的“姓名+学号”

typedef struct {

    char name[50];

    int id;

} ElemType;

 

 

 

// 定义链表结点结构(重点)

typedef struct Lnode {

    ElemType data;       // 数据域:存学生信息(姓名+学号)

    struct Lnode *next;  // 指针域:指向下一个结点的“钩子”

} Lnode, *LinkList;

 

Lnode, *LinkList; 是通过 typedef 给结构体同时定义了两个别名,

Lnode:是 struct Lnode 结构体类型的别名。

用 Lnode 代替 struct Lnode

例如:Lnode node; 等价于 struct Lnode node;

*LinkList:是 struct Lnode*(结构体指针类型)的别名。

这表示 LinkList 本身就是一个指针类型,用于指向 struct Lnode 结构体。

int main() {

    // 1. 创建结点:类比“手写3张学生卡片”

    Lnode node1, node2, node3;

    // 2. 给结点填数据:往“卡片”里写学生信息

    strcpy(node1.data.name, "张三");

    node1.data.id = 101;

    strcpy(node2.data.name, "李四");

    node2.data.id = 102;

    strcpy(node3.data.name, "王五");

    node3.data.id = 103;

    // 3. 用指针域“钩”起来:把卡片串成链

    node1.next = &node2; // 张三的卡片 → 钩住李四的卡片

    node2.next = &node3; // 李四的卡片 → 钩住王五的卡片

    node3.next = NULL;   // 王五是最后一张,钩子放空

    // 4. 用头指针遍历链表:从第一张卡片开始看

    LinkList head = &node1; // 头指针指向第一张卡片(张三)

    Lnode *p = head;        // 临时指针,用来“遍历”

    while (p != NULL) {     // 只要钩子不空,就继续看

        printf("姓名:%s,学号:%d\n", p->data.name, p->data.id);

        p = p->next;        // 移动到下一张卡片

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Deepcyc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值