zoukankan      html  css  js  c++  java
  • [LeetCode]Remove Nth Node From End of List

    Given a linked list, remove the nth node from the end of list and return its head.

    For example,

       Given linked list: 1->2->3->4->5, and n = 2.
    
       After removing the second node from the end, the linked list becomes 1->2->3->5.
    

    Note: Given n will always be valid. Try to do this in one pass.

    思考:设两个指针一前一后间隔n-1个元素。分两种情况。

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
        ListNode *removeNthFromEnd(ListNode *head, int n) {
            // IMPORTANT: Please reset any member data you declared, as
            // the same Solution instance will be reused for each test case.
            ListNode *p,*q,*r;
    		p=head;
    		r=head;
    		while(n--)
    			p=p->next;
    		if(p==NULL) 
    		{
    			head=r->next;
    			delete r;
    		}
    		else
    		{
    			while(p->next)
    			{
    				r=r->next;
    				p=p->next;
    			}
    			q=r->next;
    			r->next=q->next;
    			delete q;
    		}
    		return head;
        }
    };
    

      

  • 相关阅读:
    关于C++类中的静态数据成员
    关于C++中char,sizeof,strlen,string
    C++学习笔记(7)
    C++学习笔记(6)
    C++学习笔记(指针)
    C++学习笔记(4)
    UVA 10780
    UVA 531
    HDU, 3579 Hello Kiki
    UVA, 10413 Crazy Savages
  • 原文地址:https://www.cnblogs.com/Rosanna/p/3416999.html
Copyright © 2011-2022 走看看