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

下面是最终的效果:

相关推荐
wh233z3 小时前
Codeforces Round 969 (Div. 2) (A~D)
c语言·开发语言·数据结构·c++·算法·图论
cyzhou12213 小时前
数据结构应用实例(五)——关键路径
数据结构
sjsjs115 小时前
【数据结构-一维差分】力扣1854. 人口最多的年份
数据结构·算法·leetcode
理论最高的吻6 小时前
104. 二叉树的最大深度【 力扣(LeetCode) 】
数据结构·c++·算法·leetcode·职场和发展·二叉树
我明天再来学Web渗透7 小时前
【hot100-java】【对称二叉树】
java·开发语言·数据结构·算法·leetcode·链表·深度优先
羑悻的小杀马特7 小时前
c++中的二叉搜索树
数据结构·c++·学习
樱娆π7 小时前
数据结构基础讲解(八)——树和二叉树专项练习(上)
数据结构
蠢蠢的打码7 小时前
18061 数的交换
数据结构·c++·算法
卿卿qing7 小时前
【JavaScript】数据结构之树
数据结构
Wise cas4298 小时前
C++笔记20•数据结构:哈希(Hash)•
数据结构·c++·笔记·哈希算法