当前位置:首页 > 经验 >

怎么找单链表节点(如何确认链表节点)

来源:原点资讯(www.yd166.com)时间:2022-11-04 00:41:37作者:YD166手机阅读>>

福哥答案2020-11-03:

1.输入链表头节点,奇数长度返回中点,偶数长度返回上中点 。

1.1.快慢指针。

1.2.单指针。

1.3.数组。

2.输入链表头节点,奇数长度返回中点,偶数长度返回下中点 。这道题是leetcode上的第876道题,叫【链表的中间节点】。

2.1.快慢指针。

2.2.单指针。

2.3.数组。

golang代码如下:

package main import "fmt" func main() { if true { fmt.Println(2) head := &ListNode{} node := head node.Val = 0 node.Next = &ListNode{} node = node.Next node.Val = 1 fmt.Println(middleNode1_1(head), "偶上中,快慢指针") fmt.Println(middleNode1_2(head), "偶上中,单指针") fmt.Println(middleNode1_3(head), "偶上中,数组") fmt.Println(middleNode2_1(head), "偶下中,快慢指针") fmt.Println(middleNode2_2(head), "偶下中,单指针") fmt.Println(middleNode2_3(head), "偶下中,数组") } if true { fmt.Println("---------------") fmt.Println(3) head := &ListNode{} node := head node.Val = 0 node.Next = &ListNode{} node = node.Next node.Val = 1 node.Next = &ListNode{} node = node.Next node.Val = 2 fmt.Println(middleNode1_1(head), "偶上中,快慢指针") fmt.Println(middleNode1_2(head), "偶上中,单指针") fmt.Println(middleNode1_3(head), "偶上中,数组") fmt.Println(middleNode2_1(head), "偶下中,快慢指针") fmt.Println(middleNode2_2(head), "偶下中,单指针") fmt.Println(middleNode2_3(head), "偶下中,数组") } if true { fmt.Println("---------------") fmt.Println(1) head := &ListNode{} node := head node.Val = 0 fmt.Println(middleNode1_1(head), "偶上中,快慢指针") fmt.Println(middleNode1_2(head), "偶上中,单指针") fmt.Println(middleNode1_3(head), "偶上中,数组") fmt.Println(middleNode2_1(head), "偶下中,快慢指针") fmt.Println(middleNode2_2(head), "偶下中,单指针") fmt.Println(middleNode2_3(head), "偶下中,数组") } } type ListNode struct { Val int Next *ListNode } //1.输入链表头节点,奇数长度返回中点,偶数长度返回上中点 。 //快慢指针 func middleNode1_1(head *ListNode) *ListNode { pre := &ListNode{} //虚拟头节点 pre.Next = head pre.Val = 1 slow := pre fast := pre for fast != nil && fast.Next != nil { slow = slow.Next fast = fast.Next.Next } return slow } //1.输入链表头节点,奇数长度返回中点,偶数长度返回上中点 。 //单指针 func middleNode1_2(head *ListNode) *ListNode { n := 0 cur := head for cur != nil { n cur = cur.Next } k := 0 cur = head n = (n - 1) / 2 for k < n { k cur = cur.Next } return cur } //1.输入链表头节点,奇数长度返回中点,偶数长度返回上中点 。 //数组 func middleNode1_3(head *ListNode) *ListNode { list := make([]*ListNode, 0) for head != nil { list = append(list, head) head = head.Next } return list[(len(list)-1)/2] } //2.输入链表头节点,奇数长度返回中点,偶数长度返回下中点 。这道题是leetcode上的第876道题,叫【链表的中间节点】。 //快慢指针 func middleNode2_1(head *ListNode) *ListNode { slow := head fast := head for fast != nil && fast.Next != nil { slow = slow.Next fast = fast.Next.Next } return slow } //2.输入链表头节点,奇数长度返回中点,偶数长度返回下中点 。这道题是leetcode上的第876道题,叫【链表的中间节点】。 //单指针 func middleNode2_2(head *ListNode) *ListNode { n := 0 cur := head for cur != nil { n cur = cur.Next } k := 0 cur = head n /= 2 for k < n { k cur = cur.Next } return cur } //2.输入链表头节点,奇数长度返回中点,偶数长度返回下中点 。这道题是leetcode上的第876道题,叫【链表的中间节点】。 //数组 func middleNode2_3(head *ListNode) *ListNode { list := make([]*ListNode, 0) for head != nil { list = append(list, head) head = head.Next } return list[len(list)/2] }

执行结果如下:

怎么找单链表节点,如何确认链表节点(1)

栏目热文

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

单链表如何判断是不是尾节点(单链表最后一个节点判断条件)

单链表如何判断是不是尾节点(单链表最后一个节点判断条件)

数组与链表是数据结构最基础的两种,其他的诸如hash表、树、队列、栈等都是基于这两种数据结构实现,上面两篇文章介绍了数组...

2022-11-04 00:06:53查看全文 >>

如何确认链表节点(链表如何判断是否为尾节点)

如何确认链表节点(链表如何判断是否为尾节点)

数据结构有顺序存储和链式存储两种存储方式。顺序存储的数组可以使用下标随机访问,但插入操作比较麻烦,且需要整块的内存,另外...

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

单链表查找特定值(单链表的查找并计数)

单链表查找特定值(单链表的查找并计数)

数组中取值可以根据下标获取指定的值,但链表不行,链表中逻辑相邻的元素,在物理上不一定是相邻的。链表中取值只能从首元结点开...

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

单链表中间节点(单链表中各节点是否连续)

单链表中间节点(单链表中各节点是否连续)

单链表是一种线性数据结构,与顺序表占据一段连续的内存空间不同,链表是用一组地址任意的存储单元来存储数据,每个存储单元分散...

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

单链表如何查找中间结点(如何求链表中的中间节点)

单链表如何查找中间结点(如何求链表中的中间节点)

部分数据结构请看常见Java问题及笔试题(二十一),这里只列出主要方法与测试用例!!!寻找单链表的中间节点,最简单的思路...

2022-11-04 00:14:56查看全文 >>

文档排行