【数据结构与算法】四 链表 反转
来源:互联网 发布:转移矩阵和马尔科夫链 编辑:程序博客网 时间:2024/06/01 09:56
【数据结构与算法】四 链表 反转
链表
前面我们提到数组,今天我们来聊一聊链表,链表也是一基础数据结构,在很多语言原生纯在.好了,我们不废话直接自己来实现个链表练练手…
C++
#include <iostream>struct node{ int num; node* next;};void out(node* head){ node* iterator = head ; while(iterator){ std::cout << iterator->num << std::endl; iterator = iterator->next; }}int main(int argc, const char * argv[]) { node* head = nullptr; node* newNode = nullptr; for(int i = 0; i < 5; i++){ newNode = new node; newNode->num = i; newNode->next = head; head = newNode; } out(head);}
struct结构体定义了一个node , node中包含整数型 num 与node型 next .
我们在main的for循环中新建立了5个node , 并把新建立的Node 的next指向上一个node , 这样就形成了一个链表 . 具体机构看下图 …
这五个元素可以是在内存的任何地方,
解决了数组插入,与删除的问题,比如现在4与3之间插入3.5 ,只需要让4的next指向3.5,并让3.5的next指向3这个Node就可以了 ,删除也是同样的道理。所以就数组与链表来说链表在插入与删除的性能要高于数组,但是链表随机访问性能要低于数组,链表取第一个元素与第100个元素的时间是相差很大的,随着链表的增大,访问尾部的元素时间也就越长。
反转
数组是我们做了数组的反转,并对数组反转做了简单的时间复杂度计算(具体看我前面的博客),接下来我们实现链表的反转。其实只要将链表中各个元素的指针反转就可以了,把问题分解开就是让4->next = nullptr ; 3->next = 4 ; 以此类推,看来这是一个重复的工作,那我们就用递归来实现它。
node* reverse(node* first){ if(first->next == nullptr) return first; node* second = first->next; node* new_head = reverse(second); second->next = first; first->next = nullptr; return new_head;}
我们来简单的分析一下这个方法, 在方法中我们实现了第一个元素与第二个元素next的反转,那么接下来就时第二个元素与第二个元素的反转,以此类推,方法的最后我们把反转后的新的链表头返回 。
基础数据结构
我们前面提到的数组与链表事基础数据结构,那么为什么说着两者是基础的数据结构呢?
栈stack 这种数据结构就是只可以从头取数据。
队列 一头进,一头出 。
哈希表 …
这些我们在后面都会有介绍 。
最后
通过上面一些简单的讲解,
相信朋友们已经知道其原理及特性了。
本人能力有限,
如发现错误或不合理欢迎指正…
- 【数据结构与算法】四 链表 反转
- 数据结构与算法四
- 数据结构与算法-字符串反转
- 【数据结构与算法】二 数组反转 reverse
- 数据结构与算法之反转链表
- 数据结构与算法之链表反转
- Java数据结构与算法分析《四》链表
- 数据结构与算法(四)链表
- 数据结构与算法之四(链表)
- 算法与数据结构笔记四
- 面试(四) 数据结构与算法
- 数据结构与算法分析笔记与总结(java实现)--链表3:链表反转问题
- 数据结构与算法之四 搜索算法
- 数据结构与算法之链表(三)单链表反转
- C 链表的反转(数据结构与算法)
- 数据结构与算法学习笔记(二)反转链表
- 数据结构与算法笔记(三)反转部分链表
- 左程云著算法与数据结构题目最优解笔记-反转单双链表
- 8876
- python入门困难
- 开发人员应具备的产品设计意识
- 人提醒电脑猜大小c++源代码
- 【机房合作】UML图之包图再学习
- 【数据结构与算法】四 链表 反转
- linux下DMA驱动
- 机器学习系列(4)_机器学习算法一览,应用建议与解决思路
- HDU 2191 512大地震 【多重背包模板题】
- 新闻客户端开发
- Android特效专辑(十二)——仿支付宝咻一咻功能实现波纹扩散特效,精细小巧的View
- lintcode: Gas Station
- HDU 5634 Rikka with Phi
- 搭建hadoop2.6集群