Linked List
konsy_dong
Java,C++,Python,linux
展开
-
《剑指Offer》 反转链表
题目描述: 输入一个链表,反转链表后,输出链表的所有元素。思路: 设置一个新的newHead,其为NULL,当pHead不为NULL时,设计nextHead=pHead->next,pHead->next指向newHead,将newHead设置为新的链表头pHead,pHead再设置成nextHead从来来将之后所有的数据反转。代码:/*struct ListNode { int va原创 2017-04-07 10:20:51 · 353 阅读 · 0 评论 -
LeetCode 2. Add Two Numbers
题目: You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and retu原创 2017-04-26 16:40:40 · 314 阅读 · 0 评论 -
C++——构建单链表的方法
方法一:适用于构建一个单链表 但是不适用空链表和同时构建多个链表,因为EOF是输入流的终止符#include <iostream>#include <vector>struct ListNode{ int val; ListNode* next; ListNode(int x) :val(x), next(NULL){}};ListNode* createList()原创 2017-05-01 11:25:00 · 1507 阅读 · 0 评论 -
LeetCode 160. Intersection of Two Linked Lists
题目: Write a program to find the node at which the intersection of two singly linked lists begins.For example, the following two linked lists:A: a1 → a2 ↘原创 2017-04-18 15:20:32 · 367 阅读 · 0 评论 -
LeetCode 61. Rotate List
题目: Given a list, rotate the list to the right by k places, where k is non-negative.For example: Given 1->2->3->4->5->NULL and k = 2, return 4->5->1->2->3->NULL思路: 将链表右移k次,要注意的就是k如果很大,只要先将k对链表长度len原创 2017-04-18 14:43:01 · 255 阅读 · 0 评论 -
《剑指Offer》从尾到头打印链表
题目描述 输入一个链表,从尾到头打印链表每个节点的值。思路:判断当前head是否为NULL,如果不是,把head->val放到a的末尾;如果是,跳出循环。 再将a逆序放到b里。(注:代码2中,反转vector用STL中的reverse实现,刚开始不知道这个。。。。)代码实现1:/*** struct ListNode {* int val;* struct Li原创 2017-03-24 22:55:27 · 310 阅读 · 0 评论 -
LeetCode 237. Delete Node in a Linked List
题目: Write a function to delete a node (except the tail) in a singly linked list, given only access to that node.Supposed the linked list is 1 -> 2 -> 3 -> 4 and you are given the third node with value原创 2017-04-04 16:24:46 · 330 阅读 · 0 评论 -
LeetCode 206. Reverse Linked List
题目: Reverse a singly linked list. 思路: 将一个链表的顺序调换 代码:/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}*原创 2017-04-04 16:23:08 · 239 阅读 · 0 评论 -
LeetCode 83. Remove Duplicates from Sorted List
题目: Given a sorted linked list, delete all duplicates such that each element appear only once.For example: Given 1->1->2, return 1->2. Given 1->1->2->3->3, return 1->2->3.思路: 删除链表中的重复节点代码:/*** Def原创 2017-04-04 16:19:02 · 302 阅读 · 0 评论 -
《剑指Offer》 合并两个排序的链表
题目描述: 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。思路: 如果pHead1为NULL但pHead2不为NuLL时,返回pHead2;如果pHead2为NULL但pHead1不为NuLL时,返回pHead1;如果pHead1和pHead2都为NULL时,返回的是最初定义的newHead也为NULL(因为之后的操作都无效),newHead初始化为原创 2017-04-07 10:21:53 · 395 阅读 · 0 评论 -
LeetCode 21. Merge Two Sorted Lists
题目Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.思路取a的长度,从后往前,如果当前不为空格,且当前位置>0,位置往前移动,计数加1代码1. 递归法:/** * D原创 2017-04-10 14:18:55 · 190 阅读 · 0 评论 -
《剑指Offer》 链表中倒数第k个结点
题目描述: 输入一个链表,输出该链表中倒数第k个结点。思路: 设置一个新ret,先将pListHead位置往后移k-1位,使得ret与pListHead距离为k-1,这样只要pListHead为最后一个位置时,ret的位置就是倒数第k个节点的位置,返回ret。代码:/*struct ListNode { int val; struct ListNode *next; L原创 2017-04-07 10:24:38 · 486 阅读 · 0 评论 -
LeetCode 234. Palindrome Linked List
题目: Given a singly linked list, determine if it is a palindrome.思路: 给定一个链表,判断它是不是回文链表 根据链表的奇偶分情况,然后反转后半段链表,与前半段比较。 代码:struct ListNode { int val; ListNode *next; ListNode(int x) : val(原创 2017-04-04 16:24:10 · 373 阅读 · 0 评论 -
LeetCode 203. Remove Linked List Elements
题目: Remove all elements from a linked list of integers that have value val.Example Given: 1 –> 2 –> 6 –> 3 –> 4 –> 5 –> 6, val = 6 Return: 1 –> 2 –> 3 –> 4 –> 5思路: 给定一个链表,删除链表中所有的val值 。 具体思路见代码注释。原创 2017-04-04 16:22:42 · 254 阅读 · 0 评论 -
LeetCode 141. Linked List Cycle
题目: Given a linked list, determine if it has a cycle in it.Follow up: Can you solve it without using extra space?思路: 判断一个链表中是否有循环,运用快慢指针,如果有循环,肯定会相遇代码:/** * Definition for singly-linked list. * st原创 2017-04-04 16:20:24 · 246 阅读 · 0 评论 -
《剑指Offer》从尾到头打印链表
题目描述: 输入一个链表,从尾到头打印链表每个节点的值。思路: 先将链表结点中的val顺序保存在vector中,再利用reverse()函数逆序vector然后输出,特别要考虑的是如果输入为空链表的情况。代码:/*** struct ListNode {* int val;* struct ListNode *next;* Lis原创 2018-02-06 11:09:53 · 173 阅读 · 0 评论