[leetcode]Remove Nth Node From End of List

来源:互联网 发布:好看的战争电影知乎 编辑:程序博客网 时间:2024/06/01 09:03

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等于3的时候,起初如下,


然后int i=1;i<N;i++直到如下


然后判断当前节点是不是最后一个,如果是最后一个,则是删除第一个节点,直接返回start->next就可以,如果不是那么start与end同时往后移动,


直到end->next是最后一个节点,此时start->next就是要删除的节点。

代码如下:


// test19RemoveNthNodeFromEndofList.cpp : 定义控制台应用程序的入口点。
//


#include "stdafx.h"


/**
* Definition for singly-linked list.
* struct ListNode {
*     int val;
*     ListNode *next;
*     ListNode(int x) : val(x), next(NULL) {}
* };
*/
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}

};


int isEnd(ListNode *theNode);
ListNode *removeNthFromEnd(ListNode *head, int n);


int _tmain(int argc, _TCHAR* argv[])
{
//ListNode *r1;
//ListNode *r2;
//ListNode *r3;
//ListNode *r4;
//ListNode *r5;
//ListNode *head;
//r1 =  new ListNode(0);
//r2 = new ListNode(0);
//r3 = new ListNode(0);
//r4 = new ListNode(0);
//r5 = new ListNode(0);
//r1->val = 1;
//r1->next = r2;


//r2->val = 2;
//r2->next = r3;


//r3->val = 3;
//r3->next = r4;
//r4->val = 4;
//r4->next = r5;
//r5->val =5;
//r5->next = NULL;
ListNode *r1;
ListNode *r2;
ListNode *r3;
r1 = new ListNode(0);
r2 = new ListNode(0);
r3 = new ListNode(0);
r1->next = r2;
r1->val = 1;
r2->next = r3;
r2->val = 2;
r3->next = NULL;
r3->val = 3;


ListNode *res = removeNthFromEnd(r1, 2);
return 0;
}


ListNode *removeNthFromEnd(ListNode *head, int n) 
{
if (n <= 0)
return head;
ListNode *start = head;
ListNode *end = head;
ListNode *temp;
for (int i = 1; i < n; i++)
{
end = end->next;
}
if (isEnd(end))
return start->next;
else
{
while (!isEnd(end->next))
{
end = end->next;
start = start->next;
}
temp = start->next->next;
start->next = temp;


}
return head;
}
int isEnd(ListNode *theNode)
{
if (theNode->next == NULL)
return 1;
return 0;
}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 药流一直不排出怎么办 宝宝脸过敏红了怎么办 小孩湿疹脸上都是红红的怎么办 眼周刺痛红红的怎么办 脸敷面膜刺痛红红的怎么办 脸上有凹凸不平的坑怎么办 宝宝脸上角质层薄有红血丝怎么办 红衣军到决赛圈怎么办 宝宝湿疹留下的黑印怎么办 出牙宝宝很烦躁怎么办 法斗嘴唇破了怎么办 狗嘴巴周围红了怎么办 脸上起红包还痒怎么办 睾丸胀痛有下坠感怎么办 英语不好又不会读怎么办 七个月宝宝手上长倒刺怎么办 字母纹身纹反了怎么办 花甲生的吃了怎么办 别人告我欠他钱怎么办 实习手册没有公司的印章怎么办? 家长管的太严怎么办 对于老公沉迷于股票怎么办 月经期吃了香瓜怎么办 月经漏到内裤上怎么办 上班没时间养狗怎么办 宝宝呼吸道感染反复发烧怎么办 熬夜后头晕想吐怎么办 生气后全身无力酸痛怎么办? 久坐导致的腰疼怎么办 削土豆手变黑了怎么办 熬夜后头痛眼痛怎么办 孩子毎天通宵游戏怎么办 熬夜写作业困了怎么办 三十多岁白头发越来越多怎么办 AI界面字体太小怎么办 睡不着怎么办躺倒床上脑子混乱 作息规律不正常夜里睡不着怎么办 作息不规律引起身体痒怎么办 在大学里好无聊怎么办 开会时间通知错了怎么办 商场要求商户变更位置怎么办