常见的时间复杂度
O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)
线性表
- 线性存储结构
- 存储位置计算。假设一个数据元素占用的存储空间为c,则LOC(i)=LOC(a1)+(i-1)*c
- 插入:
- 先从最后一个元素开始向前遍历到第i个位置,分别将它们向后移动一个位置
- 将数据插入i处
- 表长+1
- 备注:这样才不会出现覆盖的情况
- 删除:
- 先取出删除元素;
- 从删除元素开始遍历到最后一个位置,分别将它们前移一位
- 表长-1
链式存储结构
- 单链表:[头结点]{(数据域:null/附加信息)(头指针:指向第一个节点的地址)}—>[第一个节点]{(数据域)(指针:指向下一个节点的地址)}
- 获得链表第i个数据:
- 声明一个指针p指向第一个结点
- 遍历,知道p为空。
- 查找成功或者null
- 插入:
- 标准插入语句:
p为前,p->next为后,在中间插入s,则s->next=p->next;p->next=s;
- 标准插入语句:
- 删除:
- 标准删除语句:
p为前,p->next为中,p->next-next为后,则p->next = p->next-next;
- 标准删除语句:
- 创建单链表
- 头插法:
head->ai->ai-1->....->a1
- 尾插法:
head->a1->a2->....ai
- 头插法:
- 整表删除
- 获得链表第i个数据:
- 时间性能
- 查找
- 顺序存储结构:O(1)
- 单链表O(n)
- 插入和删除
- 顺序存储结构:O(n) 平均移动表长一半的元素
- 单链表O(1)
- 查找
- 静态链表
- 用数组描述的链表:结构为{[数据],[下一个数据的数组下表]}
- 第一个和最后一个元素数据域不存数组&
- 单链表:[头结点]{(数据域:null/附加信息)(头指针:指向第一个节点的地址)}—>[第一个节点]{(数据域)(指针:指向下一个节点的地址)}
- 线性存储结构
数据结构基础知识
最新推荐文章于 2024-07-05 23:03:08 发布