• 【leetcode】【单链表】【19】Remove Nth Node From End of List


    #include<iostream>
    using namespace std;
    
    struct ListNode {
    	int val;
    	ListNode *next;
    	ListNode(int x) : val(x), next(NULL) {}
    };
    
    class Solution {
    public:
    	ListNode* removeNthFromEnd(ListNode* head, int n) {
    		int numOfNode = 0;
    		ListNode* cur = head;
    		while (cur){ //统计节点个数
    			++numOfNode;
    			cur = cur->next;
    		}
    		int beforeDelete = numOfNode - n;
    		ListNode* temp = NULL;
    		if (beforeDelete == 0){ //删除头结点情况
    			temp = head;
    			head = head->next;
    		}else{ //删除非头结点情况
    			cur = head;
    			while (--beforeDelete > 0)
    				cur = cur->next;
    			temp = cur->next;
    			cur->next = temp->next;
    		}
    		delete temp;
    		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 lst;
    	head = lst.createList(head);
    	lst.printNode(head);
    
    	head = lst.removeNthFromEnd(head, 2);
    	lst.printNode(head);
    
    	system("pause");
    	return 0;
    }

  • 相关阅读:
    delphi Base64
    delphi 注册表
    二、Spring Boot项目的三种启动方式
    Junit的运行流程以及Junit常用注解
    eclips集成单元测试
    六、AcriveMQ集群配置的三种方式,以及组合实现
    五、Sping 中实现简单实现activeMQ
    三、简单实现activeMQ发送消息
    二、安装ActiveMQ消息中间件
    一、消息中间件基础
  • 原文地址:https://www.cnblogs.com/ruan875417/p/4558319.html
Copyright © 2020-2023  润新知