链表
wyyyyyyyy·
这个作者很懒,什么都没留下…
展开
-
Lintcode 174.删除链表中倒数第n个节点
1.问题描述:给定一个链表,删除链表中倒数第n个节点,返回链表的头节点。2.解题思路:head先走了n步,这样head和temp之间差n个节点,之后head和temp一起往后移动,当head移动到了NULL的时候,temp移动到了倒数第n+1个节点的位置,之时候改变temp->next将他指向他的下一个节点的下一个节点,这样就是把倒数第n个节点给删掉了。3.通过的代码/** * D原创 2017-03-27 22:44:58 · 2754 阅读 · 1 评论 -
Lintcode 35.翻转链表
1.问题描述:翻转一个链表,将给定的链表按他相反的顺序表示。2.解题思路:相当于尾插法,创建dummy先保存了head的地址,将创建的temp保存head->next的地址,这样就让head下移,然后指回原来的地址,即使原来的链表断了,但还可以找到他的地址,就可以实现链表的翻转3.通过的代码: /** * Definition of ListNode * * class L原创 2017-03-25 23:37:39 · 1694 阅读 · 1 评论 -
Lintcode112.删除排序链表中的重复元素
1.问题描述:给定一个排序链表,删除所有重复的元素每个元素只留下一个2.解决思路:判断当前节点temp和temp->next数据域存放的数据元素的关系,若两个节点的存放数据相同将 temp->next指向temp->next->next这样就可以删掉和temp存放相同元素的temp->next;若不同则temp往后移动,在进行判断。3.通过的代码/** * Definition o原创 2017-03-25 15:04:03 · 1002 阅读 · 0 评论 -
Lintcode 451.两两交换链表中的节点
1.问题描述:给一个链表,两两交换其中的节点,然后返回交换后的链表。2.思路:两两交换两个节点数据域所存放的数据元素3.通过的代码:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x原创 2017-03-25 13:08:41 · 926 阅读 · 1 评论 -
Lintcode 372.在O(1)时间复杂度里删除节点
1.问题描述:给定一个单链表中的一个等待被删除的节点(非表头或表尾)。请在O(1)时间复杂度删除该链表节点。2.解题思路:已经给定了一个要删除的节点node,就用node的下一个节点来覆盖掉要删除的node。然后释放掉node以前的下一个节点的空间。3.通过的代码:/** * Definition of ListNode * class ListNode { * publi原创 2017-03-25 12:52:23 · 567 阅读 · 0 评论 -
lintcode链表专题总结
总结自己半个学期没写程序,感觉好多东西都已经忘得很多了,尤其是在大一上学期的时候,自己没有好好学习,自己的基础就很低,所以在开始写的时候就有很多基础的知识自己不通,问一个学数据结构的大哥,他让我自己好好复习复习以前的知识,我就在网上搜了一些学习内容,基本的知识自己差不多就搞懂了。自己做题的时候还是有差距,自己还是会看题但是没有任何的想法,不知道怎么写。刚开始的时候自己就是将老师在PPT讲过的改原创 2017-03-30 00:04:49 · 290 阅读 · 0 评论 -
Lintcode 173.链表插入排序
1.问题描述:用插入排序对链表排序2.思路:在链表中,将小的节点往前插,大就往后插,这样之后就可以把链表按大小顺序排好。。3.通过的代码:/** * Definition of ListNode * class ListNode { * public: * int val; * ListNode *next; * ListNode(int原创 2017-03-29 23:13:44 · 701 阅读 · 1 评论 -
Lintcode 76.链表划分
1.问题描述:给定一个单链表和数值x,划分链表使得所有小于x的节点排在大于等于x的节点之前。你应该保留两部分内链表节点原有的相对顺序2.解题思路:先创建两个节点,从开始遍历链表判断节点的值与x的大小,分别存放将比x大和小的节点,最后将两个链表连起来。3./** * Definition of ListNode * class ListNode { * publi原创 2017-03-29 23:12:06 · 338 阅读 · 0 评论 -
Lintcode 165合并两个排序链表
1.问题描述:将两个排序链表合并为一个新的排序链表2.解题思路:遍历两个链表的公共长度,根据节点值得大小来改变每次节点的连接,然后判断那条链表还有剩余,最后将较长链表的剩余部分追加到节点的后面3.通过的代码:/** * Definition of ListNode * class ListNode { * public: * int val; * L原创 2017-03-28 23:15:02 · 696 阅读 · 0 评论 -
Lintcode 166.链表倒数第n个节点
1.问题描述:找到单链表倒数第n个节点,保证链表中节点的最少数量为n2.解题思路:创建两个指向head的指针p q,让p遍历,p先开始移动,p走到第n-1个节点是,之后p q 一起往后移动,这时候当p指向最后一个节点的时候,q就指向了倒数第n个节点的位置,这时候返回q就可以了。3.通过的代码:/** * Definition of ListNode * class ListNo原创 2017-03-27 23:07:28 · 1042 阅读 · 0 评论 -
Lintcode167.链表求和C++
1.问题描述:你有两个用链表代表的整数,其中每个节点包含一个数字。数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头。写出一个函数将两个整数相加,用链表形式返回和2.解题思路:从两条链表的最开始节点一个个相加每的个节点只能存取3.通过的代码:/** * Definition for singly-linked list. * struct ListNode {原创 2017-03-28 22:04:36 · 1105 阅读 · 0 评论 -
Lintcode 452.删除链表中的元素
1.问题描述:删除链表中等于给定值val的所有节点2.解题思路:创建一个头节点dummy,来保存第一个节点。然后将dummy附值给head,这样就从链表的第一的节点开始遍历,若head->next的值与val的值相等,则将head->next指向head->next->next;这样就可以删除节点。继续移动将head下移,删除整条链中存放val的节点。3.解决问题的代码/**原创 2017-03-25 23:44:42 · 896 阅读 · 0 评论