链表
BIG_GENERAL_DD
好好学习,天天向上.
展开
-
链表中环的入口地址 (Java实现)
给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode EntryNodeOfLoop(ListNode pHead) { ...原创 2021-03-30 19:43:00 · 144 阅读 · 0 评论 -
删除链表中重复的节点 (Java实现)
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。例如,链表1->2->3->3->4->4->5 处理后为 1->2->5https://blog.nowcoder.net/n/28870a5b1326448aa3315abf3b5443a9?f=comment// 递归写法,比较容易理解,但当链表基本无重复节点时,效率不高。/* public class ListNode ...转载 2021-03-30 19:37:46 · 329 阅读 · 0 评论 -
复杂链表的复制 (Java实现)
输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)https://blog.nowcoder.net/n/18002ef9a8604b4f8ea78eb830b15fa9?f=commentimport java.util.HashMap;public class Solution { ..转载 2021-03-30 19:37:52 · 242 阅读 · 0 评论 -
两个链表的第一个公共节点 (Java实现)
输入两个链表,找出它们的第一个公共结点。难点:公共节点如何理解?公共节点 指的是 公共节后的内容是一样的,https://www.nowcoder.com/questionTerminal/6ab1d9a29e88450685099d45c9e31e46先统计两个链表的长度,如果两个链表的长度不一样,就让链表长的先走,直到两个链表长度一样,这个时候两个链表再同时每次往后移一步,看节点是否一样,如果有相等的,说明这个相等的节点就是两链表的交点,否则如果走完了还没有找到相等的节点,说..转载 2021-03-29 17:06:22 · 352 阅读 · 0 评论 -
合并2个排序的链表 (Java实现)
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode Merge(ListNode list1,ListNode list2.原创 2021-03-29 16:01:12 · 176 阅读 · 0 评论 -
反转链表 (Java实现)
输入一个链表,反转链表后,输出新链表的表头。没啥说的,直接迭代。/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode ReverseList(ListNode head) { if(h..原创 2021-03-29 15:39:48 · 190 阅读 · 0 评论 -
链表中倒数第K个节点 (Java实现)
输入一个链表,输出该链表中倒数第k个结点。如果该链表长度小于k,请返回空。思路: 快慢指针。import java.util.*;/* * public class ListNode { * int val; * ListNode next = null; * public ListNode(int val) { * this.val = val; * } * } */public class Solution { /** .原创 2021-03-29 15:34:05 · 382 阅读 · 0 评论 -
从尾到头打印链表
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。难点: 迭代法对单链表进行翻转。(主要是其中的新建的3个节点指针的操作顺序)/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {* this.val = val;* }* }**/import ...原创 2021-03-29 15:07:43 · 300 阅读 · 0 评论 -
链表面试题精讲
本篇博客是关于七月算法 ,曹鹏老师所讲的关于链表面试题部分的习题,加上自己的补充与笔记!链表简介链表:一个元素和下一个元素靠指针连接(松散),不能O(1)直接访问到第k个元素n 单(向)链表 :只能找到下一个节点n 双(向)链表:能找到上一个和下一个节点n 循环(单、双)链表:首尾相接 形成环Java : LinkedListC++ : STL listC :原创 2017-09-12 21:15:19 · 435 阅读 · 0 评论 -
链表学习(4)
1、某带链的队列初始化状态为front=rear=NULL,经过一系列正常的入队与退队操作后,front=rear=10.该队列的元素个数为:1.分析:队列为链栈时,除了初始构造皆为空外,当这两个指针再次相遇时,这个链队列的元素为一个。注意和循环队列区别。 2、用不带头结点的单链表存储队列,其队头指针指向队头结点,队尾指针指向队尾结点,则在进行出队出队操作时:队头队尾指针都可能要修改。原创 2017-05-16 13:08:39 · 927 阅读 · 0 评论 -
链表学习(6)
1.设顺序表的长度为n。下列最坏情况下比较次数小于n的是(A)A 寻找最大项 B 堆排序C 快速排序 D 顺序查找法分析:在顺序表中查找最大项,最坏情况比较次数为 n-1 ;顺序查找法最坏情况下比较次数为 n 。快速排序在最坏情况下需要进行 n(n-1)/2 、堆排序需要 nlog2n ,这两种方法无法确定比较次数是否小于 n 。故本题答案为 A 项。 2.栈和链表是两原创 2017-06-18 20:21:20 · 2033 阅读 · 0 评论 -
链表学习(5)
1、 散列法存储的基本思想是由关键字的值决定数据的存储位置。 2、(非空)广义表中: 1)表头head可以是原子或一个表; 2)表尾tail一定是一个表; 广义表的同级元素(直属于同一个表中的各元素)具有线性关系。 广义表难以用顺序表存储结构;广义表可以是一个多层次结构; 广义表:广义表是线性表原创 2017-05-19 12:07:31 · 560 阅读 · 0 评论 -
链表学习(3)
1、线性结构与非线性结构,主要看元素之间的关系。若是一对一关系就是线性表,如果不是一对一就是非线性。 2、LS=((a,b,c),(d,e,f));tail(LS)=((d,e,f));head(tail(LS))=(d,e,f);tail(head(tail(LS)))=(e,f);head(tail(head(tail(LS))))=e;任何一个非空广义表的表头是表原创 2017-05-13 12:54:26 · 2826 阅读 · 0 评论 -
链表学习(2)
1、(1)对于双向循环链表,在p指针所指的节点之后插入s指针所指节点的操作应为:s->left=p;s->right=p->right;p->right->left=s;p->right=s; 分析:双向链表的插入顺序,先搞定插入节点的前驱和后继,再搞定后节点的前驱,最后搞定前节点的后继。 (2)补充:在非空双向循环链表中q所指向的结点前插入一个由p所指的链结点的过原创 2017-05-12 12:51:05 · 1613 阅读 · 0 评论 -
链表学习(1)
1、广义表LS=(a1,a2……an)非空,则a1是LS表头,其余元素组成的表(a2,……an)称为LS表尾。非空广义表的表头是一个元素,可以是原子也可以是一个子表,而表尾则必定是子表。Eg:LS(a,b),表头为a,表尾是(b)而不是b。 2、Class java.util.ArrayList:元素在集合中有序,指的是元素插入过程中记录了元素的插入顺序。 ArrayL原创 2017-05-11 09:51:20 · 363 阅读 · 0 评论