zoukankan      html  css  js  c++  java
  • 【leetcode】【单链表】【206】Reverse Linked List

    #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;
    }

  • 相关阅读:
    PHP 中 define() 和 const 定义常量时的区别
    tar 解压常用压缩文件格式命令大全
    JVM的GC策略
    守护线程(Daemon Thread)
    探索HashMap实现原理及其在jdk8数据结构的改进
    Java面试& HashMap实现原理分析
    Java分布式应用
    全面理解Java内存模型
    Java& Vector与ArrayList区别
    深入理解Java虚拟机&运行时数据区
  • 原文地址:https://www.cnblogs.com/ruan875417/p/4558326.html
Copyright © 2011-2022 走看看