有个同事,之前一直写弱类型语言,连链表结构都不知道。。。。下面是gpt解释
链表是一种常见的数据结构,用于存储一系列元素。与数组不同,链表中的元素在内存中不是连续存放的,而是通过每个元素(称为节点)中的指针(或引用)连接起来。链表的结构具有以下特点:
节点:链表由一系列节点组成,每个节点通常包含两部分,一部分用于存储数据,另一部分是一个或多个指针,用于指向列表中的下一个或前一个节点。
指针:节点中的指针用于连接链表中的元素,使其形成一个序列。在最简单的单向链表中,每个节点只包含一个指向下一个节点的指针。
头指针:链表通常有一个头指针,它指向链表的第一个节点,通过这个头指针可以访问整个链表。
尾指针:在某些链表实现中,可能会有一个尾指针指向链表的最后一个节点,但这不是必须的。
空链表:一个空链表不包含任何节点,其头指针通常为null。
动态大小:链表的大小可以在运行时动态变化,不需要像数组那样预先分配固定大小的存储空间。
插入和删除操作:在链表中插入或删除节点通常比数组更高效,因为这些操作只涉及到指针的修改,而不需要移动其他元素。
类型:链表有多种类型,包括单向链表、双向链表、循环链表等。
遍历:访问链表中的元素通常需要从头指针开始,然后通过节点间的指针逐个遍历。
内存使用:由于每个节点都需要额外的存储空间来存储指针,链表相比于数组可能会使用更多的内存。
链表是一种基础且强大的数据结构,适用于实现栈、队列、符号表等更高级的数据结构。它们在计算机科学和编程中有着广泛的应用。
代码,增删改查
package main
import (
"fmt"
)
type Elem int
type LinkNode struct {
Data Elem
Next *LinkNode
}
func New() *LinkNode {
return &LinkNode{0, nil}
}
func (head *LinkNode) Insert(i int, e Elem) bool {
p := head
j := 1
for nil != p && j < i {
p = p.Next
j++
}
if nil == p || j > i {
fmt.Println("pls check i:", i)
return false
}
s := &LinkNode{Data: e}
s.Next = p.Next
p.Next = s
return true
}
func (head *LinkNode) Traverse() {
point := head.Next
for nil != point {
fmt.Println(point.Data)
point = point.Next
}
fmt.Println("--------done----------")
}
func (head *LinkNode) Delete(i int) bool {
p := head
j := 1
for (nil != p && j < i) {
p = p.Next
j++
}
if nil == p || j > i {
fmt.Println("pls check i:", i)
return false
}
p.Next = p.Next.Next
return true
}
func (head *LinkNode) Get(i int) Elem {
p := head.Next
for j:= 1; j< i ;j++ {
if nil == p {
return -100001
}
p=p.Next
}
return p.Data
}
func main() {
linkedList := New()
linkedList.Insert(1, 9)
linkedList.Insert(1, 99)
linkedList.Insert(1, 999)
linkedList.Insert(1, 9999)
linkedList.Insert(1, 99999)
linkedList.Insert(1, 999999)
linkedList.Traverse()
linkedList.Delete(4)
linkedList.Traverse()
e := linkedList.Get(4)
fmt.Println(e)
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律