大话数据结构

  1. /*
  2. 顺序存储的结构
  3. */
  4. #define MAXSIZE 20
  5. //存储空间初始分配量
  6. typedef int ElemType;
  7. //ElemType类型根据实际情况而定,这里假设为int
  8. typedef struct {
  9. ElemType data[MAXSIZE];
  10. // 数组存储数据元素,最大值为MAXSIZE
  11. int length;
  12. // 线性表当前长度
  13. } SqList;
  14. /*
  15. 地址计算方法
  16.  
  17. 每个数据元素,不管是整形、实型、字符型,它们都要占用一定的存储单元。
  18. 假设为c单元,那么线性表中第i个数据元素和第i+1个数据元素的存储位置满足
  19. 下列关系(LOC表述获得存储位置的函数):
  20. LOC(a_i_) = LOC(a_i-1_)+c
  21. (_表示下标的起始标志)
  22. LOC(a_i) = LOC(a_1_)+(i-1)*c
  23.  
  24. 计算线性表中任意位置的地址,时间相同。
  25. 对每个线性表位置的存入或者取出数据,对于计算机而言,均为相等的时间,为一个常熟。
  26. 时间复杂度
  27. 存取时间性能
  28. O(1)
  29.  
  30. */
  31.  
  32. /*
  33. 顺序存储结构的插入与删除
  34. */
  35.  
  36. /*获得元素的操作*/
  37. #define OK 1
  38. #define ERROR 0
  39. #define TRUE 1
  40. #define FALSE 0
  41. typedef int Status;
  42. //Status 是函数的类型,其值是函数结果状态码,如OK
  43. //初始条件:顺序线性表L已存在,1<=i<=ListLength(L)
  44. //操作结果:用e返回L中第i个数据元素的值
  45. Status GetElem(SqList L, int i, ElemType *e) {
  46. if(L.length== || i< || i>L.length)
  47. return ERROR;
  48. *e=L.data[i-];
  49. return OK;
  50. }
  51. //GetElem(L,i*e) 查 获得元素操作
  52. //时间复杂度O(1)
  53.  
  54. /*
  55. 插入操作
  56. */
  57.  
  58. //ListInsert(*L,i,e) 增 添加元素操作
  59. //初始条件:顺序线性表L已存在,i<=i<=ListLength(L)
  60. //操作结果:在L中第i个位置之前插入新的数据元素e,L的长度增加1
  61. Status ListInsert(SqList *L, int i, ElemType e) {
  62. int k;//???improve下移?
  63. if(L->length==MAXSIZE)
  64. //顺序线性表已满
  65. return ERROR;
  66. if(L.length== || i< || i>L.length)
  67. return ERROR;
  68. if(i<=L->length) {
  69. for(k=L->length-; k>=i-; k--)
  70. L->data[k+] = L->data[k];
  71. }
  72. L->data[i-]=e;
  73. L->length++;
  74. return OK;
  75. }
  76. /*
  77. 删除操作
  78. */
  79.  
  80. //初始条件:同上
  81. //删除结果:删除L的第i个数据元素,并用e返回其值,L的长度减1
  82. Status ListDelete(SqList *L, int i, ElemType *e) {
  83. int k;
  84. if(L->length==)
  85. //线性表为空
  86. return ERROR;
  87. if(i< || i>L->length)
  88. return ERROR;
  89. *e = L->data[i-];
  90. if(i<L-length) {
  91. for(k=i; k<L->length; k++)
  92. L->data[k-]=L->data[k];
  93. }
  94. L->length--;
  95. return OK;
  96. }
  97.  
  98. /*
  99. 插入和删除的时间复杂度
  100. 最好的情况:元素要插入到最后一个位置或者删除最后一个元素
  101. 不需要移动元素
  102. O(1)
  103. 最坏的情况:元素要插入到第一个位置或者删除第一个元素
  104. 需要移动所有元素
  105. O(n)
  106. 每个位置插入或删除呀元素的可能性相同
  107. 平均复杂度
  108. O(n)
  109. */

线性表 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的更多相关文章

随机推荐

  1. centos7 更改主机名

    在CentOS或RHEL中,有三种定义的主机名:a.静态的(static),b.瞬态的(transient),以及 c.灵活的(pretty).“静态”主机名也称为内核主机名,是系统在启动时从/etc ...

  2. PostgreSQL存储过程(5)-异常错误处理

    1. 异常错误处理 在PL/pgSQL函数中,如果没有异常捕获,函数会在发生错误时直接退出,与其相关的事物也会随之回滚.我们可以通过使用带有EXCEPTION子句的BEGIN块来捕获异常并使其从中恢复 ...

  3. 【RF库XML测试】Get Elements

    Name:Get ElementsSource:XML <test library>Arguments:[ source | xpath ]Returns a list of elemen ...

  4. Ajax 分析方法

    我们如何查看到 Ajax 请求: 以 https://m.weibo.cn/u/2830678474 这个网页为例,按 F12,加载网页,然后选择资源类型为 XHR 的就可以看到 Ajax 请求了 我 ...

  5. 新唐的开发环境的搭建,驱动以及BSP

    https://www.keil.com/demo/eval/arm.htm#DOWNLOAD1,MDK-ARM的IDE集成开发环境:mdk512.exehttp://www.keil.com/fid ...

  6. WP8.1学习系列(第十七章)——Windows Phone重要图形、视觉指示器和通知

    美感在手机应用中是不可或缺的,它是直观操作的代名词.在 Windows Phone 中,你的磁贴.初始屏幕.图标.控件和导航的视觉元素会引起用户对应用程序内的相关任务.优先事项或操作的注意,并采用新颖 ...

  7. iPhone X的缺口和CSS

    苹果公司(Apple)的发布会也开完了,新产品也将登陆了.估计很多开发人员看到iPhone X的设备是要崩溃了,特别对于前端开发人员更是如此. iPhone X的屏幕覆盖了整个手机的屏幕,为相机和其他 ...

  8. Eclipse中如何在指定工程中搜索指定的字符串

    1.点击Search: 2.在下拉框中先择Search. 3. 4. 5.选择Java 6.

  9. sencha touch 坑爹的Panel,数据不显示了...

    一位同学问我一个问题: sencha touch中xtype创建dataview死活不显示!!版本2.3.1,MVC模式,sencha touch创建目录程序很简单,主界面一个tabPanel,两个分 ...

  10. windows中安装pip,setuptools,django等

    1,安装Python3.6 (下载exe文件,双击安装)      注意设置环境变量,让Python的在任意位置都可以执行 .Python 下载地址:https://www.python.org/do ...