#leetcode刷题之路19-删除链表的倒数第N个节点
2019-03-13 23:30:58来源:博客园 阅读 ()
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:
给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.
说明:
给定的 n 保证是有效的。
思路:
1.先让end指针向前走(n-1),这样的话就可以让end和first之间出现(n-1)的间隔,
2.让end和first一起向后走,直到end到头了,此时first就是倒数第n个数
3.再让temp走到first之前,用(temp->next=first->next;)来跳过first,再释放first,
4.代码中考虑了集中极端的情况。
#include <iostream> using namespace std; struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} }; ListNode* createlist(int n) { ListNode *head = (ListNode*)malloc(sizeof(ListNode)); ListNode *pre = head; for (int i = 0; i < n; i++) { ListNode *p = (ListNode*)malloc(sizeof(ListNode)); cin >> p->val; pre->next = p; pre = p; } pre->next = nullptr; return head; } ListNode* removeNthFromEnd(ListNode* head, int n) { ListNode *temp=head; ListNode *first=head; ListNode *end=head; if((temp->next)==nullptr) return nullptr; if(n==1) { while(end->next->next!= nullptr) { end=end->next; } temp=end->next; temp=nullptr; free(temp); end->next=nullptr; return head; } while((n-1)!=0) { n--; end=end->next; } //cout<<end->val<<endl; while(end->next!= nullptr) { first=first->next; end=end->next; } if(temp==first) return first->next; //cout<<"first"<<first->val<<endl; //cout<<end->val<<endl; while((temp->next!=first)) { temp=temp->next; } //cout<<temp->val<<endl; temp->next=first->next; first=nullptr; free(first); return head; } int main() { ListNode* head=createlist(5); ListNode *ans=removeNthFromEnd(head,3); ans=ans->next; while(ans!= nullptr) { cout<<ans->val<<endl; ans=ans->next; } return 0; }
原文链接:https://www.cnblogs.com/biat/p/10525077.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:关于类的几点说明
- 算法笔记刷题6 ( PAT 1003我要通过 ) 2020-05-08
- OI之路 2019-10-25
- 小白的C++之路——求质数 2019-10-25
- #leetcode刷题之路17-电话号码的字母组合 2019-03-13
- #leetcode刷题之路16-最接近的三数之和 2019-03-12
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash