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

下面是最终的效果:

相关推荐
无限进步_30 分钟前
【C语言&数据结构】二叉树遍历:从前序构建到中序输出
c语言·开发语言·数据结构·c++·算法·github·visual studio
菜鸟233号1 小时前
力扣518 零钱兑换II java实现
java·数据结构·算法·leetcode·动态规划
鱼跃鹰飞2 小时前
面试题:解释一下什么是全字段排序和rowid排序
数据结构·数据库·mysql
Ka1Yan4 小时前
[链表] - 代码随想录 160. 相交链表
算法·leetcode·链表
Ka1Yan4 小时前
[链表] - 代码随想录 206. 反转链表
数据结构·链表
学嵌入式的小杨同学4 小时前
C 语言实战:动态规划求解最长公共子串(连续),附完整实现与优化
数据结构·c++·算法·unity·游戏引擎·代理模式
良木生香4 小时前
【C语言进阶】文件操作的相关详解(1):
c语言·数据结构·c++
Ka1Yan4 小时前
[链表] - 代码随想录 203. 移除链表元素
数据结构·链表
坚持就完事了5 小时前
滑动窗口算法
数据结构
有一个好名字5 小时前
力扣-奇偶链表
算法·leetcode·链表