leetcode206:反转链表
链表基础知识
解题思路
- 核心代码(leetcode/牛客可执行)
class Solution {
public:
ListNode* reverseList(ListNode* head) {
ListNode* NewHead = nullptr;
ListNode* node;
while(head != nullptr){
node = head;
head = head->next;
node->next = NewHead;
NewHead = node;
}
return NewHead;
}
};
- 完整可运行代码
#include<iostream>
using namespace std;
#define MAX 1000
struct ListNode {
int num;
ListNode* next;
};
ListNode* CreatNode(int a[], int n) {
ListNode* head;
ListNode* phead;
ListNode* newnode;
int i;
phead = new ListNode;
phead->num = a[0];
head = phead;
for (i = 1; i < n; i++) {
newnode = new ListNode;
newnode->num = a[i];
newnode->next = nullptr;
phead->next = newnode;
phead = phead->next;
}
return head;
}
ListNode* reverseList(ListNode* head) {
ListNode* phead;
ListNode* node;
ListNode* NewHead = nullptr;
phead = head;
while (phead != nullptr) {
node = phead;
phead = phead->next;
node->next = NewHead;
NewHead = node;
}
return NewHead;
}
void PrintList(ListNode* head) {
ListNode* phead;
phead = head;
while (phead != nullptr) {
cout << phead->num << "->";
phead = phead->next;
}
cout << "NULL" << endl;
}
int main() {
int i;
int n;
int a[MAX];
cin >> n;
for (i = 0; i < n; i++) {
cin >> a[i];
}
ListNode* head;
head = CreatNode(a, n);
PrintList(head);
ListNode* NewHead = reverseList(head);
PrintList(NewHead);
return 0;
}