数据结构 手写笔记,希望大家支持哈哈
建议大家 点赞收藏
配套学习的 数据结构与算法基础(青岛大学-王卓)老师 的课程
可以配合课程一起学习哈 (文章内图片也有部分截取)
这是一些文章中出现可能陌生的词
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; // 移动到下一张卡片
}
(持续更新ing)&spm=1001.2101.3001.5002&articleId=149971330&d=1&t=3&u=7105786a82c8417987ff77d98a3b56dc)
1213

被折叠的 条评论
为什么被折叠?



