complexity_action
大话数据结构
/*
顺序存储的结构
*/
#define MAXSIZE 20
//存储空间初始分配量
typedef int ElemType;
//ElemType类型根据实际情况而定,这里假设为int
typedef struct {
ElemType data[MAXSIZE];
// 数组存储数据元素,最大值为MAXSIZE
int length;
// 线性表当前长度
} SqList;
/*
地址计算方法 每个数据元素,不管是整形、实型、字符型,它们都要占用一定的存储单元。
假设为c单元,那么线性表中第i个数据元素和第i+1个数据元素的存储位置满足
下列关系(LOC表述获得存储位置的函数):
LOC(a_i_) = LOC(a_i-1_)+c
(_表示下标的起始标志)
LOC(a_i) = LOC(a_1_)+(i-1)*c 计算线性表中任意位置的地址,时间相同。
对每个线性表位置的存入或者取出数据,对于计算机而言,均为相等的时间,为一个常熟。
时间复杂度
存取时间性能
O(1) */ /*
顺序存储结构的插入与删除
*/ /*获得元素的操作*/
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
typedef int Status;
//Status 是函数的类型,其值是函数结果状态码,如OK
//初始条件:顺序线性表L已存在,1<=i<=ListLength(L)
//操作结果:用e返回L中第i个数据元素的值
Status GetElem(SqList L, int i, ElemType *e) {
if(L.length== || i< || i>L.length)
return ERROR;
*e=L.data[i-];
return OK;
}
//GetElem(L,i*e) 查 获得元素操作
//时间复杂度O(1) /*
插入操作
*/ //ListInsert(*L,i,e) 增 添加元素操作
//初始条件:顺序线性表L已存在,i<=i<=ListLength(L)
//操作结果:在L中第i个位置之前插入新的数据元素e,L的长度增加1
Status ListInsert(SqList *L, int i, ElemType e) {
int k;//???improve下移?
if(L->length==MAXSIZE)
//顺序线性表已满
return ERROR;
if(L.length== || i< || i>L.length)
return ERROR;
if(i<=L->length) {
for(k=L->length-; k>=i-; k--)
L->data[k+] = L->data[k];
}
L->data[i-]=e;
L->length++;
return OK;
}
/*
删除操作
*/ //初始条件:同上
//删除结果:删除L的第i个数据元素,并用e返回其值,L的长度减1
Status ListDelete(SqList *L, int i, ElemType *e) {
int k;
if(L->length==)
//线性表为空
return ERROR;
if(i< || i>L->length)
return ERROR;
*e = L->data[i-];
if(i<L-length) {
for(k=i; k<L->length; k++)
L->data[k-]=L->data[k];
}
L->length--;
return OK;
} /*
插入和删除的时间复杂度
最好的情况:元素要插入到最后一个位置或者删除最后一个元素
不需要移动元素
O(1)
最坏的情况:元素要插入到第一个位置或者删除第一个元素
需要移动所有元素
O(n)
每个位置插入或删除呀元素的可能性相同
平均复杂度
O(n)
*/
线性表 linear list
n个数据元素的有限序列
线性链表:每个节点只包含一个指针域
循环链表 circular linked list
O(1)
将2个线性表合并成一个表,仅需将一个表的表尾和另一个表的表头相接:仅需改变2个指针值即可。
双向链表 double linked list
单链表 NextElem O(1) PriorElem O(n)
NextElem O(1) PriorElem O(1)
栈 stack 仅在表尾进行插入或删除操作的线性表
top bottom 栈顶 栈底
last in first out 后进先出
队列 queue first in first out
front rear 队头 队尾
tree 4

forest 互补相交的树的集合
binary tree
树中不存在度大于2的节点
满二叉树
一棵深度为k且有2^k-1个结点的二叉树
complexity_action的更多相关文章
随机推荐
- CPU特性漏洞测试(Meltdown and Spectre)
2018年1月4日,国外安全研究人员披露了名为"Meltdown"和"Spectre"两组CPU特性漏洞,该漏洞波及到近20年的Intel, AMD, Qual ...
- Jsoup(四)-- Jsoup获取DOM元素属性值
1.获取博客园的博客标题以及博客地址,获取友情链接 2.代码实现: public static void main(String[] args) throws Exception{ // 创建http ...
- [SublimeText] Sublime Text 2 运行 Python 脚本中文路径解决方法
在 SublimeText 中直接运行 Python 脚本,出现以下报错提示: Running python -u C:\Documents and Settings\Administrator\桌面 ...
- Git的撤销与回滚
1,commit 之前的撤销 未添加至暂存区的撤销(add 之前) git status git checkout . 已添加至暂存区的撤销(add 之后,有或者没有commit操作都可以执行) gi ...
- Python中字符串的intern机制
intern机制: 字符串类型作为Python中最常用的数据类型之一,Python解释器为了提高字符串使用的效率和使用性能,做了很多优化,例如:Python解释器中使用了 intern(字符串驻留)的 ...
- 敏感词过滤和XML的创建
今天我慢下来啦,因为这三天没有新的课程学习内容,自己仅仅看啦一些,这让我停下来栖息片刻:说说现在的生活,简单的进行着,每天要奔波着去上课,然后回来,每天都在想怎样学习这个小知识点,大脑也在想怎样解决程 ...
- 用shell查找某目录下的最大文件
这是一个很有趣的问题,因为作为一个shell菜鸟,我第一时间是没有任何想法的.心里纳闷为什么这样的操作Linux居然没有直接的命令实现这样的查询. 很自然地,第一感觉就是用awk去实现,因为菜鸟我看a ...
- 32位win7+vs2008编译mysql 5.6.22源码并安装
以下这部分安装说明是来自http://www.2cto.com/database/201407/316681.html的win7+vs2010源码编译mysql,文章最后会说明用vs2008编译遇见的 ...
- Matlab 三维绘图与统计绘图
一. 三维绘图 p = : pi/: *pi; x = cos(p); y = sin(p); z = p; plot3(x,y,z) x = -:.:; %有-2为起点,2为递增步长,2为终止点 y ...
- android linphone中opengl显示的实现
1,java层 在界面中创建GL2JNIView(基类为GLSurfaceView). 创建对象AndroidVideoWindowImpl,将GL2JNIView作为参数传入构造函数.在该对象中监听 ...