1.什么是数据结构?

数据结构,就是我们计算机内部的运算,编程语言的基础工作模式吧,个人总结的 = = !!

数据:说简单一点,就是计算机二进制机器码,然后通过一些复杂的操作,变为复杂的语言。

数据元素:数据有集合和元素的区别,集合里的个体就是数据元素,相对应的就是数据结构。

线性表:

说简单一点,就是线性存储结构,每个表中有大量的元素,这些元素在物理位置中都是连接起来的。

这些元素有直接前驱和直接后继。线性表的位置是相邻的。

比如,位置1,位置2,位置3.。。。。。位置N。

还有一点,线性表的数据不管有多么大,都是固定的,也就是说有一个终点。

线性表的缺点:插入删除的时候,需要移动大量的元素。

比如插入删除元素后,会移动插入或者删除后面的所有元素,从而造成时间复杂度的线性增加。

链式存储结构:

每一个节点有一个指针域和数据域,其中指针域指向的是这个元素的下一个后继,这样的往复循环

就可以形成一个链表,当然,这和链式存储结构也有不同的地方,最大的不同就是他们的“地址”是不同的。

链式存储结构是依靠指针来判断他的下一个元素的具体位置的,而线性表,则是根据地址的物理位置来判断的。

打个最简单的比方,一个游戏,如果我想要去一个很远的地图。有2种方式:第一种,直接走路去,

那么我就会经过这个地图的所有区域,直到到达这个地图,还有一种方式就是用CASH,商城里的,

然后直接点那个地图,可以瞬间移动到我需要的地方。

2种方式的优缺点很显而易见了,如果是采用链式结构的话,不论隔了多么远,我也只要轻轻鼠标一点,

就可以到了,删除插入元素也是如此,如果插入或者删除元素的话,采用线性表的话,会移动和这个元素相关的元素的位置。如果是链式存储结构的话,我只要把这个元素插入或者删除,然后把以前元素的NEXT指向新插入的元素的NEXT,然后把这个新插入的元素赋给这个元素前的那个元素的指针就OK了。

链表有一个指针域,指针指向的链表中的下一个元素。那么我们该怎么插入元素呢,在链表中。

首先我们要想到,插入的元素是不是链表的头部,或者是在链表的尾部。或者在链表的中间,

或者在A元素的前面或者后面。现在讨论一下中间部分插入元素的方法。

首先让s->next=p->next 这句话的意思就是,把链表P的指向下一个元素的指针赋给s的指向下一个元素的指针。

这样 s->next就变成了p->next,由于是在链表中间插入的,所以自然s->next就指向了链表中的下一个元素。

p->next=s,这句话的意思:就是把s这个指针的值,让p->next指向s,从而前后2方面都融入了链表,从而使得成为了链表的一部分,这就是插入法。

最新文章

  1. 关于H5填写信息类页面横向布局总结
  2. PHP header函数使用大全
  3. SQL CURSOR
  4. IIS 7.5 应用程序池预热模块组件
  5. ASP.NET中使用代码来进行备份和还原数据库
  6. SimpleDataFormat格式
  7. php和AJAX用户注册演示程序
  8. 【POJ2912】【并查集】Rochambeau
  9. Flux工作流
  10. Linux 计算器
  11. kettle连接Hbase中数据导出(7)
  12. 富文本编辑器UEditor的配置使用方法
  13. Linux 学习记录 一(安装、基本文件操作).
  14. hdu 5493 (树状数组)
  15. Java第9次实验(网络)
  16. redis的list类型!!!!
  17. JQuery动画详解(四)
  18. 关于烦躁的网页编码问题utf-8,gb2312。终于自己实践了一遍
  19. redis集群redis-cloud搭建
  20. iOS UI进阶-4.0 地图与定位

热门文章

  1. return array 评论添加状态和提示信息
  2. window.location.href 中文乱码问题。。。。
  3. 使用 nvm 管理不同版本的 node 与 npm
  4. XCode的个人使用经验
  5. [New Portal]Windows Azure Storage (14) 使用Azure Blob的PutBlock方法,实现文件的分块、离线上传
  6. C语言 · 最小公倍数
  7. JS实战 · 级联菜单选择省份和城市(两种)
  8. Rxjava入门
  9. Mac下安装与配置Go语言开发环境
  10. React 生命周期