复习内容总结,其图例及其内容的总结出自b站BrightyangSimon老师
一、数据结构
其中,数据元素为研究的基本单位,数据项为最小单位,数据对象为元素的集合。
时间复杂度分析:
例1-1 ++x; O(1)
例1-2 for (i=1; i<=n; ++1)
++x; O(n)
例1-3 for(i=1; j<=n;++j)
for(j=1;j<=n;++j)
++x; O()
例1-4 for(i=1;i<=n;++i)
for(j=1;j<=i-1;++j)
++x; O()
计算步骤:、
二、线性表
(一)顺序表的表示
# define MAXSIZE 100
typedef struct{
ElemType *elem;
int length;
}SqList;
1.顺序表读取:
时间复杂度O(1)
2.顺序表插入:
插在第i个结点之前,移动n-i+1次
3.顺序表删除:
删除第i个结点,移动n-i次
(二)链表的表示
1.单项链表的表示
typedef struct Node {
ElemType data;
struct Node *next
}LNode,*LinkList;
2.双向链表的表示
typedef struck DNode
{ ElemType data;
struct DNode *prior;
顺序表的预先分配比较废存储空间,但存储密度大从这一点上说又相对节省空间。
三、栈
四、队列
五、字符串和广义表(了解)
六、二叉树
二叉树有三种遍历:
1. 先序遍历: (根左右)
2.中序遍历 : (左根右)
3.后序遍历: (左右根)
举个例子:(以下动画图转载自https://blog.youkuaiyun.com/chinesekobe/article/details/110874773):
七、图
平均查找长度第二种太大,相当于简化的顺序遍历。
八、排序