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个整数型的数组遍历链表将其值添加到数组中。再利用头插法一次将栈中的值添加到链表中并返回即可实现链表的反转效果。

下面是最终的效果:

相关推荐
Vect__5 小时前
链表漫游指南:C++ 指针操作的艺术与实践
数据结构·c++·链表
古译汉书5 小时前
蓝桥杯算法之基础知识(2)——Python赛道
数据结构·python·算法·蓝桥杯
.Vcoistnt5 小时前
Codeforces Round 1043 (Div. 3)(A-E)
数据结构·算法
野犬寒鸦5 小时前
力扣hot100:搜索二维矩阵与在排序数组中查找元素的第一个和最后一个位置(74,34)
java·数据结构·算法·leetcode·list
啊吧怪不啊吧12 小时前
C++之list类的代码及其逻辑详解 (中)
开发语言·数据结构·c++·list
楼田莉子14 小时前
C++算法学习专题:滑动窗口
开发语言·数据结构·c++·学习·算法·leetcode
zh_xuan15 小时前
LeeCode 40.组合总和II
c语言·数据结构·算法
wangluoqi16 小时前
c++ 数据结构-并查集、ST表 小总结
数据结构·c++
小马学嵌入式~1 天前
数据结构:队列 二叉树
c语言·开发语言·数据结构·算法
省四收割者1 天前
Go语言入门(10)-数组
数据结构·经验分享·笔记·vscode·算法·golang