首页 > 其他分享 >反转链表

反转链表

时间:2024-04-25 09:12:18浏览次数:13  
标签:head ListNode nil 反转 newHead 链表 Next


package main
 
import "fmt"
 
type ListNode struct {
    Val  int
    Next *ListNode
}
 
func reverseList(head *ListNode) *ListNode {
    if head == nil || head.Next == nil {
        return head
    }
    newHead := reverseList(head.Next)
    head.Next.Next = head
    head.Next = nil
    return newHead
}
 
func main() {
    // 创建一个链表: 1 -> 2 -> 3 -> 4 -> 5
    head := &ListNode{Val: 1}
    temp := head
    for i := 2; i <= 5; i++ {
        temp.Next = &ListNode{Val: i}
        temp = temp.Next
    }
 
    // 翻转链表
    newHead := reverseList(head)
 
    // 打印翻转后的链表: 5 -> 4 -> 3 -> 2 -> 1
    for newHead != nil {
        fmt.Print(newHead.Val, " -> ")
        newHead = newHead.Next
    }
    fmt.Println()
}

标签:head,ListNode,nil,反转,newHead,链表,Next
From: https://www.cnblogs.com/qcy-blog/p/18156825

相关文章

  • 双向循环链表
    /**********************************************************************************************************设计双向链表的接口******************************************************************************************************/include<stdio.h>i......
  • 双向链表和双向循环链表的(创建、插入、删除、遍历)
    V1.02024年4月24日发布于博客园目录目录目录双向链表和双向循环链表的(创建、插入、删除、遍历)设计双向链表的接口创建一个空的双向链表,空链表应该有一个头结点,对链表进行初始化创建新的结点,并对新结点进行初始化(数据域+指针域)创建一个新的结点进行头部插入创建一个新的......
  • 用一个尽可能高效的算法,查找单向链表(有头结点)中倒数第k个位置上的结点
    思路  定义两个指向链表首结点的指针变量,第一个指针变量向后移动k个位置后,第二个指针变量也开始跟着一起向后移动,直到第一个指针变量指向尾结点为止,第二个指针变量指向的位置结点就是倒数第k个结点。实现步骤及参考代码(C语言)intLList_FindLK(LList_t*Head,DataType_tda......
  • 自定义双向循环链表基本函数接口
    自定义双向循环链表的函数接口/********************************************************************* 文件名称: 双向循环链表的函数接口* 文件作者:[email protected]* 创建日期:2024/04/24* 文件功能:对双向链表的增删改查功能的定义* 注意事项:No......
  • 双向循环链表及各功能函数设计
    双向循环链表/***@filename:双向链表接口设计*@brief*@[email protected]*@date2024/04/24*@version1.0:版本*@property:*@note*CopyRight(c)[email protected]*/构造双向循环链表的结点//指的是双向循......
  • 设计双向链表的接口
    /***********************************************************************************filename:004_双向链表.cauthor:[email protected]:2024/04/24function:设计双向循环链表的接口note:None......
  • 数据结构(双向链表的实现)
    目录一:带头双向链表什么叫双向链表:二:实现声明结构体(1).创建头结点进行初始化(2).动态申请一个结点(3).插入头插入:尾插入指定位置插入(中间插入)4:删除:头删除:尾删除:中间删除:5:打印链表一:带头双向链表什么叫双向链表:结点互相指向的,首结点指向null,尾结点指向null。如果想要提高单......
  • 双向循环连链表的另类实现
    `#include<stdio.h>include<stdlib.h>/**@filename: Untitled-1.c@brief双向链表的另类实现@[email protected]@date2024/04/[email protected]:版本@property:属性介绍@noteCopyRight(c)[email protected]*/typed......
  • 双向循环链表:(创建、插入、遍历、求长、查找、删除、排序、销毁)待测
    目录一、双向循环链表存在的意义二、节点的定义三:实现1:创建链表(即创建一个空链表)2:创建新结点3:遍历4:插入头插入尾插入中间插入一、双向循环链表存在的意义数组这样的结构提供了连续内存的访问和使用,链表是对内存零碎空间的有效组织和使用,双向循环链表增大了访问的自由度。二、......
  • 数据结构-双循环链表的插入
    数据结构-双循环链表插入/*************************************************/***@filename: DcirLLinkInsert*@brief对双向循环链表插入的功能实现*@[email protected]*@date2024/04/24*@version1.0:在下坂本,有何贵干*@property:none......