顺序表的操作
更多内容请看https://blog.csdn.net/weixin_43790779
1. 顺序表的存储结构定义
1 | #define MAXSIZE 100 |
2. 初始化顺序表
1 | void InitList_Sq(SqList &L) |
3. 销毁顺序表
1 | void DestroyList(SqList &L) |
4. 清空顺序表
1 | void ClearList(SqList &L) |
5. 求顺序表的长度
1 | int GetLength(SqList L) |
6. 判断顺序表是否为空
1 | bool IsEmpty(SqList L) |
7. 获取顺序表中的某个位置数据元素内容
时间复杂度为O(1)
1 | void GetElem(SqList L,int i,ElemType &e) |
8. 在顺序表中查找值为e的数据元素
时间复杂度为O(n)
1 | int LocateElem(SqList L,ElemType e) |
9. 在顺序表中插入一个数据元素
时间复杂度为O(n)
1 | void ListInsert_Sq(SqList &L,int i,ElemType e) |
10. 删除顺序表中的第i个数据元素
时间复杂度为O(n)
1 | void ListDelete_Sq(SqList &L,int i) |
链表的操作
1. 单链表的存储结构定义
1 | typedef struct LNode |
2. 初始化单链表
1 | void InitList_L(LinkList &L) |
3. 销毁单链表
1 | void DestroyList_L(LinkList &L) |
4. 清空单链表
1 | void ClearList(LinkList &L) |
5. 求单链表的长度
1 | int ListLength_L(LinkList L) |
6. 判断单链表是否为空
1 | bool ListEmpty(LinkList L) |
7. 获取单链表中的某个数据元素内容
时间复杂度为O(n)
1 | //获取第i个位置的元素 |
8. 检索值为e的数据元素
1 | LNode *LocateElem_L(LinkList L,ElemType e) |
9. 在单链表中插入一个数据元素
时间复杂度为O(1)
1 | void ListInsert_L(LinkList L,int i,ElemType e) |
10. 删除单链表中第i个数据
时间复杂度为O(1)
1 | void ListDelete_L(LinkList L,int i,ElemType &e) |
11. 单链表的建立
1 | //前插法 |
线性表的应用
1. 线性表的合并
1 | void union(List &La,List &Lb) |
2. 链式有序表的合并
1 | //按值排序的单链表LA,LB,归并为LC后也按值排序 |
3. 顺序有序表的合并
1 | void MergeList(List La,List Lb,List &Lc) |