1 问题

反转链表,比如0->1->2->3反转后变成了3->2->1->0

2 分析

搞3个指针,初始化一个指针,让头结点指向这里,然后另外一个指针初始化为NULL,然后让第一个节点指向这里,然后头结点依次向右移,这个初始化为NULL的指针也向右移动,然后最后当头结点的next指向NULL的时候,我们直接返回这个节点就行了。

3 代码实现

#include <stdio.h>typedef struct Node
{int val;struct Node *next;
} Node;/**print list*/
void print_list(Node *head)
{if (head == NULL){printf("head is NULL\n");return;}Node *p = head;while (p != NULL){printf("value is %d\n", p->val);p = p->next;}
}/**reverse list*/
struct Node* reverse(Node *head)
{if (head == NULL){printf("reverse head is NULL\n");return NULL;}Node *end = NULL;Node *p = head;Node *start = NULL;while (p != NULL){//next nodeNode *next = p->next;//If next is NULL, we will store p, we will return p in the end;if (next == NULL){end = p;} p->next = start;start = p;p = next;}return end;
}int main()
{//0->1->2->3;Node head, node1, node2, node3;head.val = 0;head.next = &node1;node1.val = 1;node1.next = &node2;node2.val = 2;node2.next = &node3;node3.val = 3;node3.next = NULL;print_list(&head);printf("list will reverse\n");Node *hello = reverse(&head);print_list(hello);return 0;
}

4 运行结果

value is 0
value is 1
value is 2
value is 3
list will reverse
value is 3
value is 2
value is 1
value is 0

剑指offer之反转链表相关推荐

  1. 《LeetCode力扣练习》剑指 Offer 24. 反转链表 Java

    <LeetCode力扣练习>剑指 Offer 24. 反转链表 Java 一.资源 题目: 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点. 示例: 输入: 1-& ...

  2. 剑指Offer:反转链表【24】

    剑指Offer:反转链表[24] 题目描述 输入一个链表,反转链表后,输出新链表的表头. 解题分析 这道题我才发现我是属于那种真的笨,图都画出来了流程写不出来.看了别人的代码,总觉得自己差一步. 这也 ...

  3. 【LeetCode】剑指 Offer 24. 反转链表

    剑指 Offer 24. 反转链表 文章目录 剑指 Offer 24. 反转链表 一.迭代 二.递归 总结 一.迭代 在遍历链表时,将当前节点的 next 指针改为指向前一个结点.由于结点没有引用其前 ...

  4. 【双100%解法】剑指 Offer 24. 反转链表

    立志用最少的代码做最高效的表达 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点. 示例: 输入: 1->2->3->4->5->NULL 输出: ...

  5. 剑指offer:反转链表 python实现

    反转链表 输入一个链表,反转链表后,输出新链表的表头. 解题思路 暴力求解: 先用数组res存一遍所有的值: 然后再构建一个链表. # -*- coding:utf-8 -*- # class Lis ...

  6. 【剑指offer】反转链表,C++实现(链表)

    1.题目 输入一个链表的头结点,首先反转链表后,然后输出链表的所有元素(牛客网). struct ListNode {int val;struct ListNode *next; }; 2.思路 # ...

  7. 【剑指offer】反转链表

    一.题目: 输入一个链表,反转链表后,输出新链表的表头. 二.思路: 迭代思想,设置两个前后指针,思想是把当前的Next设为前面的pre,此时后面的会断掉,所以需要用一个next指针把后面的先保存起来 ...

  8. 《剑指offer》反转链表

    题目:输入一个链表,反转链表后,输出链表的所有元素. 解析:首先把所有的节点都存到list,然后用集合框架工具Collections的翻转方法把该链表翻转,然后根据集合节点创建单链表返回 /* pub ...

  9. 《剑指Offer》 反转链表

    题目描述: 输入一个链表,反转链表后,输出链表的所有元素. 思路: 设置一个新的newHead,其为NULL,当pHead不为NULL时,设计nextHead=pHead->next,pHead ...

最新文章

  1. 下面为初学者分享一下SQL 数据库学习资料
  2. 软硬兼施极限轻量BERT!能比ALBERT再轻13倍?!
  3. 【Fragment】管理机制
  4. Android将联系人读取到LISTVIEW中遇到的问题!
  5. 类实现Parcelable接口在Intent中传递
  6. 倒序查询_mysql大表分页查询翻页优化方案
  7. 【论文解读】DeepFM论文总结
  8. SpringBoot2.0 基础案例(16):配置Actuator组件,实现系统监控
  9. 详述Redo日志中操作系统块头信息损坏的处理过程
  10. “Internet Explorer无法打开站点,已终止操作”解决
  11. 解决IE6中PNG图出现灰色背景问题
  12. EditPlus代码补全设置
  13. 35、T5L 迪文屏C51开发之音频播放
  14. 冰河的大学生活,两个好基友:二神和波妞,哈哈,挺有意思的
  15. 原生js调用手机拍照功能
  16. PNG图片格式及隐写
  17. 关于AES:加密方式,让你的APK无懈可击(1),死磕原理
  18. row在C语言什么意义,ROWC是什么意思
  19. 纯鼓点节奏_打锣鼓的节奏 几种鼓点节奏类型
  20. icg不支持mysql_MongoDB与MySQL关于写确认的异同

热门文章

  1. SkyWalking8.1.0 部署和使用
  2. C#内建接口:IComparable
  3. Win11代言人官宣
  4. 浅谈C#取消令牌CancellationTokenSource
  5. [翻译]Go与C#的比较,第二篇:垃圾回收
  6. C#使用NPOI进行word的读写
  7. log4net直切ElasticSearch,小步快跑首选
  8. 高并发项目Java是标配?.NET Core要将它拉下“神坛”!
  9. Blazor 火了,不禁让人想起已死的Silverlight !
  10. .NET Core ORM 类库Petapoco中对分页Page添加Order By对查询的影响