BM1反转链表[栈+头插法]

题目要求如下:
问题比较简单,就是将链表中的值进行反转即可。

一种比较简单的方式是使用栈+链表的方式来实现,下面是相应的代码:

复制代码
#include <stdio.h>
#include <stdlib.h>
int arr[10001] = {0};
struct ListNode* ReverseList(struct ListNode* head ) {
    if (head == NULL) {
        return head;
    }
    int num = 0;
    struct ListNode* node;
    //遍历列表并入栈
    while ((head->next) != NULL) {
        arr[num] = head->val;
        head = head->next;
        num++;
    }
    node = head;
    arr[num] = head->val;
    struct ListNode* p;
    //使用头插法将链表的值反转
    for (int i = 0; i < num; i++) {
        p = (struct ListNode*)malloc(sizeof(struct ListNode));
        p->val = arr[i];
        p->next = node->next;
        node->next = p;
    }
    return node;
}

对于入栈,可以定义1个整数型的数组遍历链表将其值添加到数组中。再利用头插法一次将栈中的值添加到链表中并返回即可实现链表的反转效果。

下面是最终的效果:

相关推荐
im_AMBER6 分钟前
Leetcode 115 分割链表 | 随机链表的复制
数据结构·学习·算法·leetcode
数智工坊8 分钟前
【数据结构-树与二叉树】4.7 哈夫曼树
数据结构
!!!!81312 分钟前
蓝桥备赛Day1
数据结构·算法
七点半77012 分钟前
linux应用编程部分
数据结构
静听山水16 分钟前
Redis核心数据结构-Hash
数据结构·redis·哈希算法
zhim0025 分钟前
数据结构笔记(上)(看这亿点就够了)
数据结构
only-qi31 分钟前
leetcode24两两交换链表中的节点 快慢指针实现
数据结构·算法·链表
sin_hielo35 分钟前
leetcode 110
数据结构·算法·leetcode
执着2591 小时前
力扣hot100 - 199、二叉树的右视图
数据结构·算法·leetcode
cpp_25011 小时前
P8448 [LSOT-1] 暴龙的土豆
数据结构·c++·算法·题解·洛谷