学习链表有段时间了,今天给大家整理了有关链表的基本操作,例如链表的创建、增、删、查等基本操作
结构体定义
1 | typedef int DataType; |
头文件的定义
其中包含了面试题的头文件1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45void ListInit(ListNode **Node);
void ListDestroy(ListNode **Node);
void ListPushFront(ListNode **Node,DataType data);
void ListPushBack(ListNode **Node,DataType data);
void ListPopFront(ListNode **Node);
void LIstPopBack(ListNode **Node);
ListNode* ListFind(ListNode *Node , DataType data);
void ListInsert(ListNode **Node,ListNode *pos,DataType data);
void ListDelete(ListNode **Node,ListNode *pos);
// 删除一个无头单链表的非尾结点(不能遍历链表)
void ListDelNotFirst(ListNode **Node ,ListNode *pos);
//递归写法
void ListReversePrint(ListNode *Node);
void ListReveresePrint2(ListNode *Node);
void ListPrint(ListNode *Node);
void ListIntersection(ListNode *list1,ListNode *list2);
void TestListInterstion();
ListNode* ListJosephCircle(ListNode *list,DataType k);
void TestListJosephCircle();
ListNode *ListMerge(ListNode *list1,ListNode *list2);
void TestMerge();
void ListFindMidNode(ListNode *list);
void TestFindMid();
void ListFindTailK(ListNode *list,DataType k);
void TestFindTailK();
void ListDelTailK(ListNode *list, DataType k);
void TestDelTailK();
链表的具体基本操作 文件名(List.c)
链表的初始化及销毁
1 |
|
链表结点的创建
1 | static ListNode * CreateNode(DataType data) |
头插法
1 | //头插 |
尾插法
1 | //尾插 |
头结点的删除
1 | void ListPopFront(ListNode **Node) |
尾结点的删除
1 | void ListPopBack(ListNode **Node) |
查找
1 | //查找 |
结点前插入
1 | //在某结点前插入结点 |
删除指定结点
1 | //删除指定结点 |
单链表的打印
1 | //单链表的打印 |