当前位置: 代码迷 >> 综合 >> 【leetcode】【单链表】【206】Reverse Linked List
  详细解决方案

【leetcode】【单链表】【206】Reverse Linked List

热度:80   发布时间:2023-12-21 18:09:35.0
#include<iostream>
#include<stack>
using namespace std;struct ListNode {     int val;ListNode *next;ListNode(int x) : val(x), next(NULL) {}
};class Solution {
public:/*ListNode* reverseList(ListNode* head) { //版本一ListNode* cur = head;ListNode* new_head = NULL;while (cur){ListNode* temp = cur;cur = cur->next;temp->next = new_head;new_head = temp;}head = new_head;return head;}*/ListNode* reverseList(ListNode* head) {<span style="font-family: Arial, Helvetica, sans-serif;">//版本二,用栈模拟</span>if (head == NULL || head->next == NULL)return head;stack<ListNode*> stk;while (head){stk.push(head);head = head->next;}head = stk.top();stk.pop();ListNode* cur = head;ListNode* temp = NULL;while (!stk.empty()){temp = stk.top();stk.pop();cur->next = temp;cur = temp;;}cur->next = NULL;return head;}ListNode* createList(ListNode* head){int numOfNode;int value;cout << "please input number of listNode:";cin >> numOfNode;cin >> value;head = new ListNode(value);ListNode* cur = head;for (int i = 1; i < numOfNode; ++i){cin >> value;ListNode* temp =new ListNode(value);cur->next = temp;cur = temp;}return head;}void printNode(ListNode* head){ListNode* cur = head;while (cur){cout << cur->val << " ";cur = cur->next;}cout << endl;}
};int main(){ListNode* head=NULL;Solution solution;head = solution.createList(head);solution.printNode(head);head = solution.reverseList(head);solution.printNode(head);system("pause");return 0;
}

  相关解决方案