结点类型描述
程序编写
节点定义
linklist.h
linklist.c
list_create
1、申请内存
2、赋值
3、返回头结点
list_tail_insert
1、建立一个新结点
2、找尾结点
3、尾部插入
list_show
list_insert
链表在某一位置的插入
1、调用算法list_get
2、插入
1)新节点
2)两个指向更正
list_get
获取指定位置的结点
list_delete
1、找前驱
2、更改指向
3、free
list_free
加上178行作用是为了防止重复释放内存 ,但此时并不会将H置为NULL,因为此时H是一个形参,main真正的H并没有被修改
所以为了修改,可以返回linklist,并且返回NULL,并且在main中使用H接收(27行)
链表的复杂操作实现
链表翻转
依次取原链表中各结点,将其作为新链表首结点插入H结点之后
1、H == NULL或者只有一个结点、
2、定义P指向第二个结点,不断遍历
3、H后的插入,P移动
链表求相邻两个结点最大值
设结点data域为整型,求链表中相邻两结点data值之和为最大的第一结点的指针
思路:设p,q分别为链表中相邻两结点指针,求p->data+q->data为最大的那一组值,返回其相应的指针p即可。
1、结点个数<=2,退出
2、p和q,sum的初始化
3、p和q,sum的更新,返回值的更新
有序链表合并
设两单链表A、B按data值(设为整型)递增有序,将表A和B合并为表A,且表A也按data值递增有序