没有输出的输入是不完整的

0%

剑指offer-反转链表

本文为剑指 offer 系列第十七篇。
主要知识点为链表,还是在链表遍历的基础上做文章,比较简单。

题目描述

输入一个链表,反转链表后,输出新链表的表头。

解题思路

新建一个结点head表示头结点。
当遍历原来的链表到结点A的时候,创建一个新的节点A’,值等于A结点的值,A’指向原来的head结点,而head结点指向A结点。
如此这般,将原来的链表遍历完,整个问题也就得到解决了。

解题代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
ListNode *head = NULL;
ListNode* p = pHead;
while(p){
ListNode *temp = new ListNode(p->val);
temp->next = head;
head = temp;
p = p->next;
}
return head;
}
};

时间复杂度为O(n),空间复杂度为O(n)

以上,本题结束!