package main

import (
"fmt"
) type ListNode struct {
Val int
Next *ListNode
}
type List struct {
headNode *ListNode //头节点
} func main() { //res := letcode.Divide(434, 423)
//fmt.Println(res) headNode := &ListNode{} listData := headNode
Insert(1, listData, headNode)
Insert(2, listData, headNode)
Insert(4, listData, headNode) res := Find(2, listData)
fmt.Println(res) //listData2 := headNode
//
//Insert(4, listData2, headNode)
//Insert(3, listData2, headNode)
//Insert(2, listData2, headNode) //PrintList(listData) //res := MergeTwoLists(listData, listData2)
//fmt.Println(res)
} //删除节点
func Delete(value int, list *ListNode) {
pPrev := FindPrevious(value, list)
_ = pPrev
p := Find(value, list)
pPrev = p.Next
p = nil
} // FindPrevious ...
func FindPrevious(value int, list *ListNode) *ListNode {
p := list
for p.Next != nil && p.Next.Val != value {
p = p.Next
}
return p
} // 找出链表里面的(不安全)
func Find(value int, list *ListNode) *ListNode { p := list
for p.Val != value {
p = p.Next
}
return p } // 测试是否为最后节点 ...
func IsLast(list *ListNode) bool {
return list.Next == nil
} // 测试链表是否为空 ...
func isEmpty(list *ListNode) bool {
return list == nil
} // 打印链表 ...
func PrintList(list *ListNode) { if list.Next != nil {
fmt.Println(list.Val)
PrintList(list.Next)
} else {
fmt.Println(list.Val)
}
} // 合并两个有序的单链表 ...
func MergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode {
if l1 == nil {
return l2
}
if l2 == nil {
return l1
}
var res *ListNode
if l1.Val >= l2.Val {
res = l2
res.Next = MergeTwoLists(l1, l2.Next)
} else {
res = l1
res.Next = MergeTwoLists(l1.Next, l2)
}
return res
} // 插入节点 头插法
func Insert(value int, list *ListNode, position *ListNode) {
tempCell := new(ListNode)
//fmt.Println("++++", tempCell)
if tempCell == nil {
fmt.Println("out of space!")
}
tempCell.Val = value
tempCell.Next = position.Next
position.Next = tempCell
}

  

go中单链表的更多相关文章

  1. C++中单链表的建立和操作

    准备数据 准备在链表操作中需要用到的变量及数据结构 示例代码如下: struct Data //数据结点类型 { string key; //关键字 string name; int age; }; ...

  2. Leetcode中单链表题总结

    以下是个人对所做过的LeetCode题中有关链表类型题的总结,博主小白啊,若有错误的地方,请留言指出,谢谢. 一.有关反转链表 反转链表是在单链表题中占很大的比例,有时候,会以各种形式出现在题中,是比 ...

  3. 【python中单链表的实现】——包括初始化、创建、逆序、遍历等

    # coding=utf-8 class mynode(object): def __init__(self, data, nextnode = None): self.data = data sel ...

  4. JAVA 链表操作:循环链表

    主要分析示例: 一.循环链表简述 二.单链表循环链表 三.双链表循环链表 一.循环链表简述 循环链表即链表形成了一个循环的结构,尾节点不再指向NULL,而是指向头节点HEAD,此时判定链表的结束是尾节 ...

  5. java实现单链表常见操作

    一.概述: 本文主要总结单链表常见操作的实现,包括链表结点添加.删除:链表正向遍历和反向遍历.链表排序.判断链表是否有环.是否相交.获取某一结点等. 二.概念: 链表: 一种重要的数据结构,HashM ...

  6. Java实现链表的常见操作算法

    链表分为单链表,双向链表和循环链表,是一种链式存储结构,由一个个结点链式构成,结点包含数据域和指针域,其中单链表是只有一个指向后驱结点的指针,双向链表除头结点和尾结点外,每个结点都有一个前驱指针和一个 ...

  7. PTA之求单链表结点的阶乘和

    本题要求实现一个函数,求单链表L结点的阶乘和.这里默认所有结点的值非负,且题目保证结果在int范围内. 时间限制: 400ms 内存限制: 64MB 代码长度限制: 16KB 函数接口定义: int ...

  8. 无头结点的单链表(C语言)

    1.单链表: 在顺序表中,用一组地址连续的存储单元来一次存放线性表的结点,因此结点的逻辑顺序与物理顺序是一致的.但链表却不同,链表是用一组任意的存储单元来存放 线性表的结点,这组存储单元可以是连续的, ...

  9. PTA基础编程题目集6-6求单链表结点的阶乘和(函数题)

    本题要求实现一个函数,求单链表L结点的阶乘和.这里默认所有结点的值非负,且题目保证结果在int范围内. 函数接口定义: int FactorialSum( List L ); 其中单链表List的定义 ...

随机推荐

  1. JAVA对mongodb的基本操作

    public class test3 { //连接数据库(不需要验证,用于测试连接本地的mongodb) public static MongoDatabase getDatabase(String ...

  2. JDBC 链接mysql 8 的问题

    转载:jdbc连接mysql 8 的一些坑 1.驱动包要升级为 mysql-connector-java-8.0.11.jar 2.JDBC driver 由“com.mysql.jdbc.Drive ...

  3. pip install -r requirements.txt

    生成文件 pip freeze > requirements.txt pip install --help Usage: pip install [options] <requiremen ...

  4. go接口

    // 接口例子package main import "fmt" type Human struct { Name string Age int Sex string Phone ...

  5. Django_ORM字段_字段参数

    Object Relational Mapping (ORM) ORM:对象关系映射模式是一种为解决面向对象与关系数据库存在的互补匹配的现象技术.简单说就是通过使用描述对象和数据库之间的映射的元数据, ...

  6. css animate

    AniX https://a-jie.github.io/AniX/

  7. vue 父子组件通信

    算是初学vue,整理一下父子组件通信笔记. 父组件通过 prop 给子组件下发数据,子组件通过事件给父组件发送消息. 一.父组件向子组件下发数据: 1.在子组件中显式地用props选项声明它预期的数据 ...

  8. jq ajax数据交互

    get 与 post 的区别 了解和使用 get和post是HTTP与服务器交互的方式, 说到方式,其实总共有四种:put,delete,post,get. 他们的作用分别是对服务器资源的增,删,改, ...

  9. delphi的流操作的语法

    Delphi在这两方面都做的相当出色.在Delphi的早期版本Turbo Pascal 中就曾有流(Stream).群(Collection)和资源(Resource)等专门用于对象式数据管理的类.在 ...

  10. 添加本地jar包到maven仓库

    mvn install:install-file -Dfile=D:\video-lib\log4j-.jar -DgroupId=video -DartifactId=log4j -Dversion ...