首页 > 其他分享 >链表的逆置

链表的逆置

时间:2022-10-12 20:00:37浏览次数:49  
标签:head ListNode struct next 链表 return 逆置

本题要求实现一个函数,将给定单向链表逆置,即表头置为表尾,表尾置为表头。链表结点定义如下:

struct ListNode {
    int data;
    struct ListNode *next;
};

函数接口定义:

struct ListNode *reverse( struct ListNode *head );

裁判测试程序样例:

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

struct ListNode {
    int data;
    struct ListNode *next;
};

struct ListNode *createlist(); /*裁判实现,细节不表*/
struct ListNode *reverse( struct ListNode *head );
void printlist( struct ListNode *head )
{
     struct ListNode *p = head;
     while (p) {
           printf("%d ", p->data);
           p = p->next;
     }
     printf("\n");
}

int main()
{
    struct ListNode  *head;

    head = createlist();
    head = reverse(head);
    printlist(head);
    
    return 0;
}

/* 你的代码将被嵌在这里 */

模块图

 

 

struct ListNode *reverse( struct ListNode *head )
{
    if(head==NULL)
    {
        return head;
    }
    else if(head->next==NULL)
    {
        return head;
    }
    else{
        struct ListNode *q=head;
        struct ListNode *p=head->next;
        while(p!=NULL)
        {
            struct ListNode *r=p->next;
            p->next=q;
            q=p;
            p=r;
        }
        head->next=NULL;
        return q;
    }
}

 

标签:head,ListNode,struct,next,链表,return,逆置
From: https://www.cnblogs.com/kk4458/p/16785776.html

相关文章

  • TZOJ 7871:维护序列 单链表应用(创建/查询/插入/删除)
    描述 给定一个长度为n的整数序列。现在有m个操作,操作分为三类,格式如下:(1)1i:询问序列中第i个元素的值,保证i小于等于当前序列长度。(2)2iv:在序列中第i个元素前加......
  • 单链表-Python实现-jupyter->markdown 格式测试
    单链表引入顺序表理解Python变量的本质:变量存储的不是值,是值的地址理解Python的"="表示的是指向关系案例:交换a,b的值,a=10,b=20a,b=20,10t0:a这块内存(也有id),......
  • 中等-817. 链表组件
    解题思路:对链表循环执行结果:通过执行用时:232ms,在所有 JavaScript 提交中击败了36.36%的用户内存消耗:44.5MB,在所有 JavaScript 提交中击败了93.18%的用户通......
  • 817. 链表组件
    817.链表组件给定链表头结点 head,该链表上的每个结点都有一个唯一的整型值。同时给定列表 nums,该列表是上述链表中整型值的一个子集。返回列表 nums 中组件的......
  • 数据结构 链表(第7、8天)
    链表这里面的链表题比较简单,只要会遍历链表、删除链表节点、反转链表这些基本操作就行。必要时可以画图辅助理解。141.环形链表给定一个链表,判断是否有环。思路:快慢指......
  • //按照完全二叉树的层次顺序一次输入节点信息建立二叉链表的算法
    //按照完全二叉树的层次顺序一次输入节点信息建立二叉链表的算法#include<stdio.h>#include<stdlib.h>typedefcharDataType;typedefstructnode{DataT......
  • 算法每日一题(反转单链表)C语言版
     在本篇文章里,我将分享一道很经典的算法题———反转链表,并且分享多种方法去解决方法,希望可以帮助到你......
  • 「Java 数据结构」:手撕单链表的增删改查及大厂面试题。
    目录​​一、单链表的增删改查​​​​1、创建结点     ​​​​2、单链表的添加操作​​​​3、单链表的删除操作​​​​4、单链表的有效结点的个数​​​​二、......
  • 链表结构
    链表一、链表的分类1.1单项链表每个node节点指向下一个节点。然后有个head节点指向第一个节点,尾节点指向null。也可以有个last节点指向最后一个节点。这样能快速获取......
  • leetcode-287. 寻找重复数-数组构成的链表
    287.寻找重复数由题中数字都在[1,n]范围内(包括1和n),可知至少存在一个重复的整数。维护一个映射关系f(n)=index->num,其中数组的下标index,数字为num当一......