- 课程名称:Linux C语言结构体
- 课程链接:https://www.imooc.com/learn/409
- 章节名称:
- 第5章:动态数据结构
- 5-1 静态链表
- 5-2 动态链表
- 第5章:动态数据结构
- 讲师姓名:
雷过就跑
- 时间:2023-02-12 23:30
课程内容
-
静态链表
-
链表都需要一个头指针变量
-
这个头指针变量是必须的,如果只知道指向链表中间一个的地址,那么从这个地址向前的内容都将无法访问,只能从这个指针向后查找
-
也就是在上面情况中,头指针就是指向当前链表中的一个内存
-
把链表中每个元素都叫做链表的结点
-
链表要包括两个部分
- 用户所需要的数据
- 下一个结点的地址
-
使用循环来访问静态链表中数据(代码优化)
-
for (struct weapon *p = head; p != NULL; p = p->next) { printf("Price: %d, ATK: %d\n", p->price, p->atk); }
-
使用for循环可以比while循环节省行数
-
-
-
动态链表
-
所谓动态链表是指在程序运行过程中从无到有建立链表的过程,以下为源码:
-
struct Student { char *name; int code; int english; double math; struct Student *next; }//定义结构体 int main() { Student *head, *new, *newer; head = new = newer = (Student *)malloc(sizeof(Student)); std::cin >> head->name >> head->code >> head->english >> head->math; while (0 != newer->code) { new->next = newer; new = newer; newser = (Student *)malloc(sizeof(Student)); std::cin >> newer->name >> newer->code >> newer->english >> newer->math; } new->next = NULL; } // 代码进行了优化,循环体内不再需要使用判断语句
-
动态链表,是把链表中的数据在运动过程中不断添加,并且根据指定值是不理满足条件来决定是否要停止循环
-
学习心得
结构体指针理解起来还有一点费劲