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的更多相关文章
随机推荐
- centos7 更改主机名
在CentOS或RHEL中,有三种定义的主机名:a.静态的(static),b.瞬态的(transient),以及 c.灵活的(pretty).“静态”主机名也称为内核主机名,是系统在启动时从/etc ...
- PostgreSQL存储过程(5)-异常错误处理
1. 异常错误处理 在PL/pgSQL函数中,如果没有异常捕获,函数会在发生错误时直接退出,与其相关的事物也会随之回滚.我们可以通过使用带有EXCEPTION子句的BEGIN块来捕获异常并使其从中恢复 ...
- 【RF库XML测试】Get Elements
Name:Get ElementsSource:XML <test library>Arguments:[ source | xpath ]Returns a list of elemen ...
- Ajax 分析方法
我们如何查看到 Ajax 请求: 以 https://m.weibo.cn/u/2830678474 这个网页为例,按 F12,加载网页,然后选择资源类型为 XHR 的就可以看到 Ajax 请求了 我 ...
- 新唐的开发环境的搭建,驱动以及BSP
https://www.keil.com/demo/eval/arm.htm#DOWNLOAD1,MDK-ARM的IDE集成开发环境:mdk512.exehttp://www.keil.com/fid ...
- WP8.1学习系列(第十七章)——Windows Phone重要图形、视觉指示器和通知
美感在手机应用中是不可或缺的,它是直观操作的代名词.在 Windows Phone 中,你的磁贴.初始屏幕.图标.控件和导航的视觉元素会引起用户对应用程序内的相关任务.优先事项或操作的注意,并采用新颖 ...
- iPhone X的缺口和CSS
苹果公司(Apple)的发布会也开完了,新产品也将登陆了.估计很多开发人员看到iPhone X的设备是要崩溃了,特别对于前端开发人员更是如此. iPhone X的屏幕覆盖了整个手机的屏幕,为相机和其他 ...
- Eclipse中如何在指定工程中搜索指定的字符串
1.点击Search: 2.在下拉框中先择Search. 3. 4. 5.选择Java 6.
- sencha touch 坑爹的Panel,数据不显示了...
一位同学问我一个问题: sencha touch中xtype创建dataview死活不显示!!版本2.3.1,MVC模式,sencha touch创建目录程序很简单,主界面一个tabPanel,两个分 ...
- windows中安装pip,setuptools,django等
1,安装Python3.6 (下载exe文件,双击安装) 注意设置环境变量,让Python的在任意位置都可以执行 .Python 下载地址:https://www.python.org/do ...