链表基础:
知识点: 1.链表基础 2.节点的创建和添加 llist_append_node 3.链表的遍历 llist_print_each 4.链表的查找与修改 5.链表的插入与删除 6.链表的销毁 7.链表逆序 ========================== 回顾数组 1.数组的常用操作 1)插入 2)修改 3)遍历 4)删除 5)逆序 2.数组操作的问题 1)插入和删除的效率低 1 2 3 5 6 0 0 1 2 3 4 9 5 6 1 2 3 4 9 5 6 0 2)当数组空间不足时需要重新申请内存空间 3)但是遍历速度快 ========================== 链表基础 1.什么是链表 链表(Linked list)是一种常见的基础数据结构,是一种线性表 2.链表的作用 一种数据结构,保存数据 3.如何创建链表 ========================== 链表节点的创建和添加 1.如何创建和添加一个节点 2.如何插入一个节点 4.处理链表的框架 void llist_append_node (struct node *head, struct node *new) void llist_change_node(struct node *head, int id, char *name) append * insert * search * change delete destory print_all * print_node 5.添加节点模块append 练习:添加一个节点到头结点后面 ========================== 链表的遍历 1. llist_print_each函数 void llist_print_each(struct node *head); 练习: 1.遍历输出链表内容 2.向链表添中加多个节点 ========================== 链表的查找与修改 1. llist_search_node函数 struct node *llist_search_node(struct node *head, int id) void llist_print_node(struct node *nd) 1)遍历链表 2)比较要搜索的内容是否和节点数据内容匹配 3)返回节点地址 练习: 1.查找指定id的学生信息,并输出该信息 2.change函数 1)搜索要修改的节点空间 2)修改节点内的数据 1.修改指定id的学生性别 ========================== 链表的插入和删除 1. llist_insert_node函数 void llist_insert_node(struct node *head, struct node *nd, int id) 1)创建一个新节点 2)插入到指定位值 练习: 链表包含10个节点 id=3,id=4 <== tmp id=1 1.创建一个新节点并且插入到第一个节点的前面 2.创建一个节点并且插入到第三和第四个节点之间 2.delete函数 void llist_delete_node(struct node *head, int id); 1)修改该节点上一个节点的指向 2)释放当前节点 练习: 1.删除id为1节点 2.删除id为10节点 3.删除id为5节点 ========================== 链表销毁 1.destory函数 int llist_destory(struct node *head); 1)销毁和清空是两种不同的操作 例如:倒空杯子的水和砸碎杯子两个操作 练习: 销毁上面创建的链表 ========================== 链表逆序 H->A->B->C->D->E ^ ^ ^ p pp t 1.inverse函数 void llist_inverse(struct node *head); 练习: 1.按照上述顺序实现一个链表的逆序,并输出逆序的结果 ========================== 多文件封装 1.头文件 2.实现文件 ========================== 创建一个班级链表,该链表包含10个学生信息 1.每个学生包含信息有 姓名,年龄,身高,性别,语数英三门成绩 2.实现: 1)添加学生信息 2)输出所有的学生信息 3)搜索指定学生的信息,并且输出 4)将指定学生插入到指定学生的前面 5)删除指定学生信息 6)销毁班级链表 ======================== enume menu{ EXIT, ADD, SONE, SALL, INSERT, DEL, DELALL}; 1.添加学生 2.查询指定学生信息 3.查询所有学生信息 4.学生插队 5.删除指定学生信息 6.删除班级 0.退出系统