当前位置:首页 > 经验 >

在单链表中查找值为x的节点(单链表指针怎么指向上一节点)

来源:原点资讯(m.360kss.com)时间:2022-11-04 00:44:00作者:YD166手机阅读>>

通过编码实现日常关于链表可能会遇到到编程题

1 两个链表是各自自增的,要求合拼之后的链表满足单调不递减

/** * 两个递增的单链表合并保持单调递增 * * 递归求解 * @param firstNode * @param secondNode * @return */ public Node mergeNode(Node firstNode,Node secondNode){ if (firstNode==null)return secondNode; if (secondNode==null)return firstNode; Node mergeNode = null; if (firstNode.data<secondNode.data){ mergeNode = firstNode; mergeNode.next = mergeNode(firstNode.next,secondNode); } else { mergeNode = secondNode; mergeNode.next = mergeNode(firstNode,secondNode.next); } return mergeNode; }

2 单链表排序

/** * 单链表排序 * 归并排序 */ public Node sortNode(Node head){ if(head == null|| head.next == null){ return head; } Node mid = middleNode(head); Node right = sortNode(mid.next); mid.next = null; Node left = sortNode(head); return merge(left, right); } /** * 合拼排好序的子链表 * @param n1 * @param n2 * @return */ private Node merge(Node n1,Node n2){ Node dummy = new Node(0); Node node = dummy; while (n1!=null&&n2!=null) { if(n1.data<n2.data){ node.next = n1; n1 = n1.next; }else{ node.next = n2; n2 = n2.next; } node = node.next; } if(n1!=null){ node.next = n1; }else{ node.next = n2; } return dummy.next; } /** * 寻找链表中间值 * @param head * @return */ private Node middleNode(Node head){ Node slow = head; Node fast = head.next; while(fast!=null&fast.next!=null){ slow = slow.next; fast = fast.next.next; } return slow; }

3 单链表整体反转

/** * 递归方式-进行反转 * @param node * @return */ private Node reverseNodeByDG(Node head){ if(head.next == null){ return head; } Node reverseNode = reverseNodeByDG(head.next); head.next.next = head; head.next = null; return reverseNode; } /** * 遍历方式-进行反转 * @param node * @return */ private Node reverseNodeByBL(Node node){ Node prev = null; while(node!=null){ Node tmp = node.next; node.next = prev; prev = node; node = tmp; } return prev; }

4 单链表从n到m位置的反转

/** * 翻转链表的n到m之间的节点 */ Node reverseFromNTOM(Node head,int m,int n){ if(m>=n||head == null){ return head; } Node dummy = new Node(0); dummy.next = head; head = dummy; for(int i = 1;i<m;i ){ if(head == null){ return null; } head = head.next; } Node pmNode = head; Node mNode = head.next; Node nNode = mNode; Node pnNode = mNode.next; for(int i = m;i<n;i ){ if(pnNode == null){ return null; } Node tmp = pnNode.next; pnNode.next = nNode; nNode = pnNode; pnNode = tmp; } pmNode.next = nNode; mNode.next = pnNode; return dummy.next; }

5 单链表根据指定值进行分割

/** * 单链表分区 * 小于x的结点排在大于或等于x的结点之前 */ public Node nodePartition(Node head,int x){ if(head == null){ return null; } Node left = new Node(0); Node right = new Node(0); Node leftNode = left; Node rightNode = right; while(head!=null){ if(head.data<x){ left.next = head; left = head; }else{ right.next = head; right = head; } head = head.next; } left.next = rightNode.next; right.next = null; return leftNode.next; }

公众号分类整理了各种资料快去看看吧

在单链表中查找值为x的节点,单链表指针怎么指向上一节点(1)

栏目热文

大学教授可以开公司吗(国家允许院士开办公司吗)

大学教授可以开公司吗(国家允许院士开办公司吗)

新加坡南洋理工大学全职教授、物理学领域全球前1%高被引科学家、担任过多场国际重要学术会议的主席、领导的课题组实现了世界上...

2022-11-04 00:26:47查看全文 >>

老谭搞机靠谱吗(现在的搞机视频)

老谭搞机靠谱吗(现在的搞机视频)

“环线是不是降速了,好慢。”“环线现在成了观光线路了迈(吗),感觉速度还不如我骑自行车快……”这几天,不少乘坐轨道交通环...

2022-11-04 00:25:37查看全文 >>

机贩子靠谱吗(手机贩子太可怕了)

机贩子靠谱吗(手机贩子太可怕了)

其实很早的时候数码盖饭就给大家科普了“BS资源机”,他有很多名字:资源机、富士康机、1978机、BS机,这类机器是苹果全...

2022-11-04 00:29:11查看全文 >>

华强北告诉你搞靓机靠不靠谱(二手手机哪里买最靠谱)

华强北告诉你搞靓机靠不靠谱(二手手机哪里买最靠谱)

内容来自:酷安@最北的北方啥是“背包客”?背包客,顾名思义,背包,他们就是华强北的代购,因为各位小伙伴并不能都来深圳买手...

2022-11-04 00:42:44查看全文 >>

从朋友那拿手机靠谱吗(买个手机找朋友靠谱吗)

从朋友那拿手机靠谱吗(买个手机找朋友靠谱吗)

这就得追溯到我大学时期了,我经朋友介绍做了手机兼职,做了一天就被班主任辅导员轮到打电话提醒!那个手机兼职怎么说呢,对内部...

2022-11-04 00:03:50查看全文 >>

查找单链表中最大节点(单链表寻找值最大的结点)

查找单链表中最大节点(单链表寻找值最大的结点)

说真的,任何说起嵌入式软件怎么入门啊?需要学些什么东西啊,我差不多一致的回答都是:软件方面C语言和数据结构加上一些简单常...

2022-11-04 00:12:13查看全文 >>

在单链表中查找一个节点如何操作(查找链表是否存在一个节点)

在单链表中查找一个节点如何操作(查找链表是否存在一个节点)

单链表的定义链表是一种物理存储结构上非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针连接次序实现的。线性表...

2022-11-04 00:24:09查看全文 >>

单链表查找结点流程图(在单链表中查找一个节点如何操作)

单链表查找结点流程图(在单链表中查找一个节点如何操作)

单链表单链表的创建分为头插入法和尾插入法两种,两者并无本质上的不同,都是利用指针指向下一个结点元素的方式进行逐个创建,只...

2022-11-04 00:31:59查看全文 >>

单链表找中间的节点(在链表中查找节点)

单链表找中间的节点(在链表中查找节点)

想法:返回单链表的中间节点:采用双指针方法,慢指针走一步,快指针走2步,当快指针走到头,那么慢指针所在的位置就是链表的中...

2022-11-04 00:29:10查看全文 >>

单链表各个节点的关系(单链表的中间节点)

单链表各个节点的关系(单链表的中间节点)

一:相关概念(1)什么是链表官方定义:链表是一种物理存储结构上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接...

2022-11-04 00:27:00查看全文 >>

文档排行