1、 数据结构 算法设计题 天涯古巷 出品 必考 链表 题型一 单链表的定义 include include define datatype int int eg typedef struct node datatype data struct node next LNode LinkList 题型二 单链表的创建 方法一 头部插入结点创建单链表 不带头结点 define flag 0 void Create LinkList LinkList L L L NULL NULL LNode Node datatype data scanf d while data flag flag Node LN
2、ode malloc sizeof LNode Node data data Node next L L Node L scanf d 输入顺序 25 45 18 76 29 方法二 尾部插入结点创建单链表 不带头结点 void Create LinkList LinkList L L L NULL NULL LNode Node LNode R NULL R datatype data scanf d while data flag flag Node LNode malloc sizeof LNode Node data data if L NULL L Node L L Node els
3、e R next Node R Node scanf d if R NULL R next NULL 输入顺序 25 45 18 76 29 方法二 尾部插入结点创建单链表 带头结点 define flag 0 void Create LinkList LinkList L L L NULL NULL LNode Node LNode R NULL R L LinkList malloc sizeof Node L next NULL R L datatype data scanf d while data flag flag R next malloc sizeof LNode R next
4、 data data R R next scanf d R next NULL 题型三 单链表求表长 线性表的长度不包括头结点 int Length LinkList LinkList L LNode p L int j 0 L j 0 L j 1 if p NULL return 0 while p next NULL p p next j return j 题型四 单链表插入 方法一 后插法 新结点 S 插入到结点 p后面 S LNode malloc sizeof LNode S next p next p next S 方法二 前插法 新结点 S插入到结点 p前面 LNode q 定义
5、 q 来寻找 p 的前驱 while q next p q q next S LNode malloc sizeof LNode S next q next q next S 题型五 单链表删除结点 void Delete LinkList LinkList L int i i LNode p i p LNode q int j 0 while q next NULL j if j i printf d 1 i 1 else if q next NULL printf d i else p q next q next p next free p 题型六 单链表的倒置 void reverse
6、LinkList LinkList L LNode p q p L next L next NULL while p NULL q p p p next q next L next L next q 题型七 有序单链表的合并 LinkList merge LinkList A LinkList B A B LinkList C LNode p q s p A next q B next C A C next NULL free B while p NULLp p next else s q q q next s next C next C next s if p NULL p q while p NULL s p p p next s next C next C next s return C