mirror of
https://github.com/duke-git/lancet.git
synced 2025-09-27 03:45:58 +08:00
52 lines
1.3 KiB
Go
52 lines
1.3 KiB
Go
// Copyright 2021 dudaodong@gmail.com. All rights reserved.
|
|
// Use of this source code is governed by MIT license
|
|
|
|
// Package datastructure implements some data structure.
|
|
package datastructure
|
|
|
|
// LinkNode is a linkedlist node, which have a Value and Pre points to previous node, Next points to a next node of the link.
|
|
type LinkNode[T any] struct {
|
|
Value T
|
|
Pre *LinkNode[T]
|
|
Next *LinkNode[T]
|
|
}
|
|
|
|
// NewLinkNode return a LinkNode pointer
|
|
func NewLinkNode[T any](value T) *LinkNode[T] {
|
|
return &LinkNode[T]{value, nil, nil}
|
|
}
|
|
|
|
// StackNode is a node in stack, which have a Value and Next pointer points to next node in the stack.
|
|
type StackNode[T any] struct {
|
|
Value T
|
|
Next *StackNode[T]
|
|
}
|
|
|
|
// NewStackNode return a StackNode pointer
|
|
func NewStackNode[T any](value T) *StackNode[T] {
|
|
return &StackNode[T]{value, nil}
|
|
}
|
|
|
|
// QueueNode is a node in a queue, which have a Value and Next pointer points to next node in the queue.
|
|
type QueueNode[T any] struct {
|
|
Value T
|
|
Next *QueueNode[T]
|
|
}
|
|
|
|
// NewQueueNode return a QueueNode pointer
|
|
func NewQueueNode[T any](value T) *QueueNode[T] {
|
|
return &QueueNode[T]{value, nil}
|
|
}
|
|
|
|
// TreeNode is node of tree
|
|
type TreeNode[T any] struct {
|
|
Value T
|
|
Left *TreeNode[T]
|
|
Right *TreeNode[T]
|
|
}
|
|
|
|
// NewTreeNode return a TreeNode pointer
|
|
func NewTreeNode[T any](val T) *TreeNode[T] {
|
|
return &TreeNode[T]{val, nil, nil}
|
|
}
|