题目要求如下:
问题比较简单,就是将链表中的值进行反转即可。
一种比较简单的方式是使用栈+链表的方式来实现,下面是相应的代码:
#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个整数型的数组遍历链表将其值添加到数组中。再利用头插法一次将栈中的值添加到链表中并返回即可实现链表的反转效果。
下面是最终的效果: