Go实现LinkedTable

HNUlixinze 2022-04-26 17:11:04

1.数据结构定义

type LinkNode struct {
    Next *LinkNode
    Data     int 
}
 
type LinkedList struct {
	head   *LinkNode
	length int
}

2.链表初始化

func Create() newList LinkedList {
    newList = new(MyLinkedList)
    newList -> length = 0
    mewList -> head = NULL
	return
}

3.获取指定位置元素

func (this *LinkedList) Get(index int) int {
	if index < 0 || index >= this.length {
		return -1
	}
	p := this.head
	for i := 0; i <= index; i++ {
		p = p.next
	}
	return p.val
}

4.增加节点

func (this *LinkedList)AddNewNode(Node *LinkTableNode, position int) bool{
    if this == nil || Node == nil {
        return false
    }
 
    if position > this.length {
        fmt.Printf("out of range\n")
        return false
    }
 
    if position == 0 {
        if this.length != 0 {
            Node.next = LinkTable.head.next
        }
        this.head = Node
    } else {
        var tmpNodepointer *LinkTableNode = this.head
        for position != 1 {
            tmpNodepointer = tmpNodepointer.next
            position -= 1
        }
        Node.next = tmpNodepointer.next
        tmpNodepointer.next = Node
    }
    this.length += 1
    return true
}

5.删除指定位置元素

func (this *LinkedList) DeleteAtIndex(index int) bool {
	if index < 0 || index >= this.length {
		return false
	}
	p := this.head
	//找到第index-1个结点
	for i := 0; i < index; i++ {
		p = p.next
	}
	q := p.next
	p.next = q.next
	q.next = nil
	this.length--
    return true
}

6. 打印链表3

func (this *MyLinkedList) PrintList() {
	p := this.head.next
	for p != nil {
		fmt.Println(p.val)
		fmt.Print(" ")
		p = p.next
	}
}

学号:279李昕泽 

...全文
144 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

571

社区成员

发帖
与我相关
我的任务
社区描述
软件工程教学新范式,强化专项技能训练+基于项目的学习PBL。Git仓库:https://gitee.com/mengning997/se
软件工程 高校
社区管理员
  • 码农孟宁
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧