- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
线性表之顺序表与单链表的区别及优缺点线性表主要有顺序表和链表两种存储形式,贴主想问的,应该是将线性表la和lb头尾连接,要求时间复杂度为o(1),且占用辅助空间尽量小.应该使用哪种存储形式对吧?答案是应当采用链表。具体理由看文章。这里比较的是基于C语言实现的顺序表与单链表,与其他语言的实现可能会有差异,但我相信语言是相通的,它们的实现机制应该也差不多。?1、What?什么是顺序表和单链表?①顺序表:?顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构。只要确定了起始位置,表中任一元素的地址都通过下列公式得到:LOC(ai)=LOC(a1)+(i-1)*L 1≤i≤n 其中,L是元素占用存储单元的长度。②单链表:?单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。它的数据是以结点(类型一般为结构体)来表示的,每个结点的构成:数据(类型为要存储的数据的类型) + 指针(结构体指针),数据就是链表里具体要存储的东西,指针就是用来把每个节点都连接起来,使它们形成一个链状。结点:?链表:2、Compare?二者的优缺点比较①空间上的比较(Space)?a. 空间的开辟:?顺序表的实现一般是实现连续开辟一段空间,然后在进行数据的增删查改(静态顺序表),所以顺序表一般是固定空间大小的;而单链表则是一次只开辟一个结点的空间,用来存储当前要保存的数据及指向下一个结点或NULL的指针,所以单链表的空间大小时动态变化的。(当然,顺序表也可以在初始化时利用malloc函数来开辟一块空间,每当空间不够用时,再用realloc来把当前空间扩容成2倍,从而也能实现空间的动态变化(动态顺序表))。?、?b. 空间的使用:?当我们不知道要存储多少数据时,用顺序表来开辟的空间如果太大,就会造成一定程度上的浪费,而用单链表是实现时,因为是每需要存储一个数据时,才开辟一个空间,虽然有非数据项的指针占空间,但相比顺序表来说,浪费不是那么明显;反之,当我们知道存储的数据的数量时,用顺序表来开辟对应的空间大小,来存储数据,因为顺序表中每个元素的存储密度为 1,就完全不会有浪费的空间,而用单链表,因为每个结点都会有非数据项得指针,那么就会造成空间的浪费。再者,编译器会为每个程序从内存上分配一段空间,给该程序使用。然而我们每次开辟空间时都是在随机的位置开辟的,那么使用单链表,就会多次的在程序分配到的这块空间上开辟空间,因为每次都是开辟的位置都是随机的,那么可能会把这块空间搞得七零八碎,出现很多小的一般使用不到的碎片空间,这样很大程度上造成了空间的浪费,而使用顺序表的话,不会经常开辟空间,这样就减少了碎片空间的出现,那么就一定程度上节省了空间。?c. 对CPU高速缓存的影响:?因为顺序表的空间一般是连续开辟的,而且一次会开辟存储多个元素的空间,所以在使用顺序表时,可以一次把多个数据写入高速缓存,再写入主存,顺序表的CPU高速缓存效率更高,且CPU流水线也不会总是被打断;而单链表是每需要存储一个数据才开辟一次空间,所以每个数据存储时都要单独的写入高速缓存区,再写入主存,这样就造成了,单链表CPU高速缓存效率低,且CPU流水线会经常被打断。从这儿看,貌似顺序表要更好一些,真是如此吗?继续看下去。②时间上的比较(Time)a. 访问随机元素的时间复杂度:?因为顺序表的结构就像是数组一样,可以用下标来访问它的元素,所以它的元素是支持随机访问的;相比之下,单链表的数据是链式存储的,它的元素是不支持随机访问的,想要知道某个元素,只能从头结点开始遍历整个链表,知道找到了该元素为止。因此顺序表访问随机元素的时间复杂度是O(1),而单链表访问随机元素的平均时间复杂度是O(n)。b. 随机位置插入、删除元素的时间复杂度:?因为顺序表的元素是连续存储的,因此要在特定位置插入、删除元素需要把它之后的元素全部后移或前移一个元素的位置,时间开销很大;而单链表在插入或删除元素时,只需要改变它的前驱元素及插入或删除元素的指向即可。因此,顺序表在插入随机位置插入、删除元素的平均时间复杂度是O(n),单链表在插入随机位置插入、删除元素的时间复杂度是O(1)。一般来说线性表(顺序表和单链表都属于线性表)的插入删除操作会被执行的频繁一些,因此,使用单链表的频率较大。3、Summary综合上述所言,顺序表和单链表各有各的优缺点,使用哪一种会好一些要结合具体的问题而言,不能一概而论。?比如:?在查询操作使用的比较频繁时,使用顺序表会好一些;在插入、删除操作使用的比较频繁时,使用单链表会好一些。PS:使用顺序表和链表都必须满足每个元素占有相同大小的内存空间,并且这个大小是固定的
您可能关注的文档
最近下载
- designer在双质量飞轮曲轴系扭振分析中的应用_江淮汽车等.pdf VIP
- 腹腔感染的治疗(共49张PPT).pptx
- 2025年心理健康蓝皮书:中国国民心理健康发展报告.pdf VIP
- 120个文言文常考实词及记忆口诀.docx VIP
- 2024国家医保谈判药品落地现状和地方实践经验研究报告.pdf VIP
- 2024年统编版七年级道德与法制上册全册(大单元教学设计)汇编(含四个大单元).docx VIP
- 项目七:凉拌蔬菜(课件)五年级上册劳动人教版 .pptx
- 车务系统防寒安全知识.docx VIP
- 日本语能力考试N2文法课件8.(基准类语法)~を基準にして.pptx VIP
- 《智能变电站工程应用技术》全套教学课件.pptx
原创力文档


文档评论(0)