2014.3.6-C语言学习小结

链表基础:

知识点:
	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.退出系统

  

原文地址:https://www.cnblogs.com/firstrate/p/3585962.html