linked list 倒转linked list

Linked 链表反转 - 迭代 与 递归 关于List 面试中经常会碰到,那这篇文章讲的就是关于List 中 LinkedList 的常问的链表算法 阅读详情

. 倒转linked list


#include <stdio.h>
#include <stdlib.h>


struct lgc_list {
    struct lgc_list *next;
    int value;
};

void show_list(struct lgc_list *head);

struct lgc_list *reverse_list(struct lgc_list *head);
/* 递归版 */
struct lgc_list * find_node(struct lgc_list *head, int n)
{
    if (n <= 0) {
        printf("argument error!\n");
        return NULL;
    }
    if ( n == 1 || head == NULL) {
        return head;
    }
    
    find_node(head->next, n - 1);
}


*/
struct lgc_list *reverse_list(struct lgc_list *head)
{
    struct lgc_list *pos = head;
    struct lgc_list *new = NULL;
    struct lgc_list *tmp;
    while (pos != NULL) {
        tmp = pos->next;
        pos->next = new;
        new = pos;
        pos = tmp;
    }
    
    return new;
}

void show_list(struct lgc_list *head)
{
    while (head != NULL) {
        printf("%4d", head->value);
        head = head->next;
    }

    printf("\n");

}

int main()
{
    int array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    struct lgc_list *head = NULL;
    struct lgc_list *f = NULL;
    int i = 0;

    while (i < 10) {
        struct lgc_list *node;
        
        node = malloc(sizeof(struct lgc_list));
        node->value = array[i];
        node->next = head;
        head = node;
        i++;
    }
    
    show_list(head);
    f = find_node(head, 3);
    if (f != NULL) {
        printf("third node value = %d\n", f->value);
    }
    else {
        printf("third node is NULL, not exist!\n");
    }
    f = find_node(head, 11);
    if (f != NULL) {
        printf("11th node value =%d\n", f->value);
    }
    else {
        printf("11th node is NULL , not exist!\n");
    }
    head = reverse_list(head);
    show_list(head);

    return 0;

}



List-LinkedList 单链表就地反转 List-LinkedList 单链表就地反转 的代码的一种实现。 立即下载

相关推荐

深入浅出:.sh文件在Linux系统中的实战应用与技巧

本文深入浅出地介绍了.sh文件在Linux系统中的实战应用与技巧。从基础概念入手,详细讲解了Bash脚本的运行方法、权限管理,并通过编写自动化备份脚本等实例,展示了如何利用Shell脚本提升工作效率。文章还涵盖了脚本调试、错误处理以及函数、参数解析等进阶技巧,帮助读者从入门到精通,掌握这一强大的自动化工具。

weixin_29243279的博客 346

链表Linked List-Reverse a Linked List反转链表的4种方法(3)

链表Linked List-Reverse a Linked List反转链表的4种方法(3)

weixin_45428910的博客 601

电压电流双闭环PFC单相PWM整流

电压电流双闭环PFC单相整流。仿真及代码

xht2403267701的博客 6051

倒排一个LinkedList

问题: 给一个单向链表,把它从头到尾反转过来。比如: a -> b -> c ->d 反过来就是 d -> c -> b -> a 。 分析: 假设每一个node的结构是: class Node { char value; Node next; } 非递归反转: //非递归实现 public Node reverse(Node current) { ...

glamour2015的博客 2633

StarRocks慢查询排查实战:从Query Plan到Profile的保姆级调优指南

本文提供StarRocks慢查询排查的实战指南,从Query Plan解析到Profile诊断,详细讲解如何识别执行计划中的危险信号和优化关键指标。通过物化视图优化、分布式执行调整和资源管控方案,帮助DBA快速定位并解决查询性能问题,提升数据库效率。

weixin_42568801的博客 379

DSP28335与Vofa+上位机通信实战:SCIb配置避坑指南(附完整代码)

本文提供DSP28335与Vofa+上位机通信的实战指南,重点解析SCIb模块配置的常见问题与解决方案。针对研旭开发板的硬件连接、波特率精确计算、FIFO高效使用以及FireWater协议封装进行了详细说明,并附有完整代码,帮助开发者快速实现实时数据可视化与波形分析,提升调试效率。

weixin_29172963的博客 150

Reverse LinkedList

Reverse a singly linked list. 思路: 问题描述很简单,翻转一个链表。我们搜索链表,将每一个节点cur的前驱pre作为它的后继。然后继续下一个节点,但是我们在寻找下一个节点的时候(cur = cur.next),因为更改了cur的后继,cur.next反而会指向cur的原前驱节点pre。故我们需要用一个临时的指针temp来保存cur的原后继,在cur修改了后

xdugucc的博客 382

【雕爷学编程】Arduino动手做(75)---TTL转RS-485模块之二线制可以实现真正的多点双向通信

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来---小小的进步或是搞不掂的问题,希望能够抛砖引玉。 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验七十五:TTL转RS-485模块 MAX485 RS485模块 MAX485 是一个8.

雕爷学编程 1万+

倒排List

package com.anji.allways.business.sales.utils; import java.util.*; /** * 倒排LinkedList */ public class LinkedListSort { public static void sortDesc() { List<Integer> linkedList ...

C18298182575的博客 825

【AI智能体】Coze 打通MySql实现数据报表展示应用搭建详解

Coze 打通MySql实现数据报表展示应用搭建详解

congge 3857

Android开发工程师(IOT)面试指南与参考答案

【摘要】绿联科技招聘Android开发工程师(IOT方向),要求5年以上Android开发经验,精通Kotlin/Java,熟悉IOT设备交互及跨平台开发。岗位职责包括客户端开发维护、技术调研及性能优化等。核心考察点包括:Kotlin协程在IOT低功耗场景的应用、多协议设备连接层设计、音视频性能优化及离线架构实现。重点技术涉及蓝牙Mesh群控、BLE功耗优化及ReactNative混合开发。需具备GooglePlay合规经验,熟悉Android13+权限管理,并能提供量化性能优化案例。

郑伟强dev的专栏 722

链表倒转Reverse Linked List II 和二叉树BinaryTree倒转专题

在解析这个函数的实现时,我们先来回顾下函数: Reverse Linked List 。struct ListNode* reverseList(struct ListNode* head){ if(head == NULL) return head; struct ListNode* p = head; hea

qq_30198509的博客 452

【ArcGIS Pro微课1000例】0067:ArcGIS Pro3.4.2学习版下载及安装教程

【ArcGIS Pro微课1000例】0067:ArcGIS Pro3.4.2学习版网盘下载及安装教程

智慧空间实验室 2387

倒转单向链表(Reverse Singly Linked List)

1. 图示 2. 代码 typedef struct Node { int data; struct Node *next; } *Node; Node reverseSinglyListList(Node head) { if (head == 0 || head->next == 0) { return head; } Node newHead = 0; whil

HowardLynn的专栏 434

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

LeetCode 206. Reverse Linked List (倒转链表)

Reverse a singly linked list. 题目标签:Linked List   题目给了我们一个链表,要求我们倒转链表。   利用递归,新设一个newHead = null,每一轮 把下一个 node 存入 next 记住,把目前的点 cursor 连到 newHead;   然后把 next 当作新的 cursor;把 cursor 当作新的 newHe...

weixin_30263073的博客 82

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

206. 反转链表 (Reverse Linked List) - 简单

反转链表题目描述解题方法迭代法递归法可能出现的问题 题目描述 Given the head of a singly linked list, reverse the list, and return the reversed list. Example 1: Input: head = [1,2,3,4,5] Output: [5,4,3,2,1] Example 2: Input: head = [1,2] Output: [2,1] Example 3: Input: head = [] Outp

m0_62024778的博客 180

206Reverse Linked List反转链表

反转一个单链表。 示例: 输入: 1-&gt;2-&gt;3-&gt;4-&gt;5-&gt;NULL 输出: 5-&gt;4-&gt;3-&gt;2-&gt;1-&gt;NULL 进阶: 你可以迭代或递归地反转链表。你能否用两种方法解决这道题?     方法一: struct ListNode { int val; ListNode *next; L...

lMonster81 205

leetcode-day8:Reverse Linked List(反转链表)

206. Reverse Linked List Given the head of a singly linked list, reverse the list, and return the reversed list. Example 1: Input: head = [1,2,3,4,5] Output: [5,4,3,2,1] Example 2: Input: head = [1,2] Output: [2,1] Example 3: Input: head = [] Output: [

丹辰子的博客 653

[LeetCode] Reverse Linked List(递归与非递归反转链表)

Reverse a singly linked list.解题思路对于非递归实现,思路是依次将从第二个结点到最后一个结点的后继设为头结点,然后将该节点设为头结点(需记住将原头结点的后继设为空)。 对于递归实现,首先反转从第二个结点到最后一个结点的链表,然后再将头结点放到已反转链表的最后,函数返回新链表的头结点。递归实现代码1//Runtime:10 ms class Solution { publ

楚兴 1万+

LeetCode C++ 206. Reverse Linked List【LinkedList】【链表反转】

Reverse a singly linked list. Example: Input: 1->2->3->4->5->NULL Output: 5->4->3->2->1->NULL Follow up: A linked list can be reversed either iteratively or recursively...

memcpy0的博客 642

141. Linked List Cycle

题目:判断单链表是否有环,要求O(1)空间复杂度. 利用快慢指针,开始两个指针均指向链表head,然后循环移动,慢指针移动1步,快指针则移动2步,如果链表有环则两个指针一定会相遇。代码如下: /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *ne

wusecaiyun的专栏 282

LeetCode刷题-206——Reverse Linked List(反转链表)

链接: https://leetcode.com/explore/interview/card/top-interview-questions-easy/93/linked-list/560/ 题目: Reverse a singly linked list. Example: Input: 1-&amp;amp;gt;2-&amp;amp;gt;3-&amp;amp;gt;4-&amp;amp;gt;5-&amp;amp;gt;NULL Output: 5

Fan2g 300

LeetCode.206. Reverse Linked List(反转有序链表)C++ and PYTHON

实习面试了三次,两次问道这个题目,有必要整理一下了。 Reverse a singly linked list. #方法一: 使用迭代的方法,算法时间复杂度是O(n), 空间复杂度为O(1) /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *

m0_37477175的博客 785

LeetCode:Linked List Cycle

题目:判断单链表是否有环,要求O(1)空间复杂度。题目链接 利用快慢指针,开始两个指针均指向链表head,然后循环移动,慢指针移动1步,快指针则移动2步,如果链表有环则两个指针一定会相遇。代码如下: 1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; ...

weixin_30314631的博客 73

leetcode Palindrome Linked List

Given a singly linked list, determine if it is a palindrome. Follow up: Could you do it in O(n) time and O(1) space? 最直接想到的肯定是将linkedlist的每个值存到数组中,然后判断数组是否是回文的,但显然与题目的空间复杂度要求不符,最后网上看到一个方法,是倒转链表

menghan1224的博客 251

5--☆★Reversing Linked List

折磨~

zjjaibc的博客 177
上一篇: 把二叉树转化成双向连表
下一篇: 栈数据结构实现代码
smallmelon
博客等级 码龄16年 22粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值