【数据结构】链表与顺序表的优缺点,和2道经典的题
2016-09-26 18:04
246 查看
这两道题是:1.从尾到头打印单链表。
2.单链表实现约瑟夫环的问题。
首先我们在面试时可能会遇到说明一下顺序表和链表的优缺点,说说他们分别在什么场景下使用:
1.首先我们从2种结构的结构上来进行分析:
(1)对于顺序表。不论是静态的还是动态的,他们都是连续的存储空间,在读取上时间效率比较快,可以通过地址之间的运算来进行访问,但是在插入和删除操作会出现比较麻烦的负载操作。
(2)对于链表,因为他是链式存储。在我们需要的时候才在堆上开辟空间,对于插入查找的方式比较便携。但是对于遍历的话需要多次的空间跳转。
2.从2中结构的空间申请方式来看:
(1)顺序表的空间开辟是在满的时候进行多空间的申请开辟。往往存在着2^n的开辟原则。在开辟次数比较多的时候,会出现比较大的空间浪费。
(2)链表的空间开辟是针对于单个节点的空间开辟访问,不存在多余的空间浪费。并且在碎片内存池的机制下。可以有效地利用空间。
通过上面的总结,可以分析出顺序表往往用于查找遍历操作比较频繁的情况下使用。链表则针对于数据删除修改的多操作性上的情况下使用。
分别是空间上和时间上的优势与缺陷的不同。
下面我们来看一下题。
1.从尾到头打印单链表:
这个题十分的简单,在前面我们也从高位到低位打印一个数字:
同样的。我们也可以用递归的方式来实现这个问题:
思路简单,直接来看一下代码:
本文出自 “剩蛋君” 博客,转载请与作者联系!
2.单链表实现约瑟夫环的问题。
首先我们在面试时可能会遇到说明一下顺序表和链表的优缺点,说说他们分别在什么场景下使用:
1.首先我们从2种结构的结构上来进行分析:
(1)对于顺序表。不论是静态的还是动态的,他们都是连续的存储空间,在读取上时间效率比较快,可以通过地址之间的运算来进行访问,但是在插入和删除操作会出现比较麻烦的负载操作。
(2)对于链表,因为他是链式存储。在我们需要的时候才在堆上开辟空间,对于插入查找的方式比较便携。但是对于遍历的话需要多次的空间跳转。
2.从2中结构的空间申请方式来看:
(1)顺序表的空间开辟是在满的时候进行多空间的申请开辟。往往存在着2^n的开辟原则。在开辟次数比较多的时候,会出现比较大的空间浪费。
(2)链表的空间开辟是针对于单个节点的空间开辟访问,不存在多余的空间浪费。并且在碎片内存池的机制下。可以有效地利用空间。
通过上面的总结,可以分析出顺序表往往用于查找遍历操作比较频繁的情况下使用。链表则针对于数据删除修改的多操作性上的情况下使用。
分别是空间上和时间上的优势与缺陷的不同。
下面我们来看一下题。
1.从尾到头打印单链表:
这个题十分的简单,在前面我们也从高位到低位打印一个数字:
同样的。我们也可以用递归的方式来实现这个问题:
思路简单,直接来看一下代码:
2.单链表实现约瑟夫环的问题。 这个题的前提是当前的单链表已经是一个环。我们只用考虑删除的节点就OK了。 至于什么是约瑟夫环,大家可以自行百度: 直接上代码。理解约瑟夫环的思维后就是单链表的操作问题,也比较简单: void JosephRing(PLinkNode &pHead,DataType x) { int count = 0; PLinkNode index = pHead,del; assert(pHead); while(index->_next != index) { for(count = 0;count < x - 1;count++) { index = index->_next; } del = index->_next; index->_data = index->_next->_data; index->_next = index->_next->_next; pHead = index; free(del); del = NULL; } printf( "%d",pHead->_data); }ok,大家一起学习进步~
本文出自 “剩蛋君” 博客,转载请与作者联系!
相关文章推荐
- 【数据结构】链表与顺序表的优缺点,和2道经典的题
- [数据结构] 数组与链表的优缺点和区别
- 数据结构(4)--循环链表的应用之约瑟夫环问题以及线性表总结之顺序表与链表的比较
- 数据结构经典问题——出栈顺序 转载至:canlynet微博
- 线性表之顺序表与单链表的区别及优缺点
- 数据结构示例之用链表实现顺序队列
- 数据结构链表习题2.27,假设以两个元素依值递增有序排列的线性表A和B分别表示两个集合,现要求另辟空间构成一个顺序链表
- 数据结构(二)链表2:链式存储结构和顺序存储结构的优缺点
- Java基础数据结构——链表与顺序表
- 【数据结构】C语言实现顺序链表
- (C语言)单链表的顺序实现(数据结构一)
- 微软等数据结构+算法面试100题(3)--怎样把一个链表掉个顺序(也就是反序,注意链表的边界条件并考虑空链表)?
- php数据结构之顺序链表与链式线性表示例
- 数据结构之线性结构(顺序表和链表的比较)【五】
- C/C++基本数据结构:顺序表/链表堆栈
- 数据结构_1.顺序链表
- (C语言)单链表的顺序实现(数据结构一)
- 2-3-归并单链表(顺序表)-线性表-第2章-《数据结构》课本源码-严蔚敏吴伟民版
- 数据结构 学习笔记(二):线性结构:线性表(顺序表,链表,广义表,多重链表)
- 线性表之顺序表与单链表的区别及优缺点