翻转单向链表
来源:互联网 发布:高中生学编程 编辑:程序博客网 时间:2024/06/05 10:22
#引子
之前在哔哩哔哩复试时,面试官给我出了一道简单的数据结构题:翻转单链表。但是我在写代码之前询问了一下,结果是要求节点值改变还是整个链接顺序都要变。他说就简单改变值嘛!(估计问这个问题时被鄙视了)于是我就用了一个数组来存放遍历链表所得到值,然后反序赋值来解决问题。(很low,/(ㄒoㄒ)/~~)
这篇文章就通过改变整个链接顺序来实现翻转单向链表做一个简单的分析与实现,也算是对这道题做出一个合适的解答。
#实现
整个解题思路可以对应于下面这张图:
代码实现如下:(贴出功能函数的实现)
struct Node * reversedNodeTree(struct Node *node) { if (node == NULL) { return NULL; } // 应将next指针放在此处,避免在每次循环时都重新分配内存给临时变量 struct Node *tmp = node->next, *next; // 头结点需要将next设置为NULL,与其他节点的设置不同,就可以将其拎'出来,其余节点就可以在循环中归一处理 node->next = NULL; while (tmp != NULL ) { next = tmp->next; tmp->next = node; node = tmp; tmp = next; } return node;}
#总结
编程的实质就是将人脑中的处理问题的流程化思想以程序代码表现出来并交给计算机处理并实现,有时候可能我们能够以人的思考方式去解决问题,但可能在兑现为程序代码时力有未逮。这或许间接体现出了算法与数据结构的重要性,嗯!持续学习中……
阅读全文
0 0
- 翻转单向链表
- 单向链表翻转
- 单向链表翻转
- 翻转单向链表
- 翻转单向链表
- 单向链表翻转问题
- 单向链表的创建及翻转
- 普通单向链表的翻转
- C++单向链表之链表翻转
- 翻转一个单向链表的c语言代码
- 单向链表创建存入数组后翻转
- 面试系列之一:C艹翻转单向链表
- 一个 while 实现 C 翻转单向链表
- 单向链表每k个元素翻转一次。
- 单向链表每k个元素翻转一次。
- C语言单向链表的创建、释放、插入、删除、翻转操作练习
- 25. Reverse Nodes in k-Group 怎样不使用额外空间翻转一个单向链表?
- 单向链表的创建、节点删除、链表输出、翻转(写法参考计蒜客数据结构课程)
- scala基础知识--Ordering
- 使用注解时通过实体类获取表名和表字段名
- 微信小程序实现页面下拉刷新和上拉加载
- UVa10970
- Callable与Future
- 翻转单向链表
- JAVA设计模式 观察者模式
- 452 四合归零
- leetcode 71
- Spark SQL UDF和UDAF示例
- EAP session for state 0xfdeedd5afdefc4ba did not finish! 已经解决
- 机器学习——支持向量机SVM之基本型
- 决策树的创建
- 到底谁是辣鸡?(对象是否存活和GC日志分析)