mirror of
https://github.com/duke-git/lancet.git
synced 2026-03-01 00:35:28 +08:00
refactor: reconstructure souce file into the corresponding folder
This commit is contained in:
1 parent
85e1f711f5
commit
f551c56921
14 files changed
+20
-14
No files matched your search
@@ -3,11 +3,13 @@ package datastructure
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
"github.com/duke-git/lancet/datastructure"
|
||||
)
|
||||
|
||||
// DoublyLink is a linked list. Whose node has a generic Value, Pre pointer points to a previous node of the link, Next pointer points to a next node of the link.
|
||||
type DoublyLink[T any] struct {
|
||||
Head *LinkNode[T]
|
||||
Head *datastructure.LinkNode[T]
|
||||
length int
|
||||
}
|
||||
|
||||
@@ -18,7 +20,7 @@ func NewDoublyLink[T any]() *DoublyLink[T] {
|
||||
|
||||
// InsertAtHead insert value into doubly linklist at head index
|
||||
func (link *DoublyLink[T]) InsertAtHead(value T) {
|
||||
newNode := NewLinkNode(value)
|
||||
newNode := datastructure.NewLinkNode(value)
|
||||
size := link.Size()
|
||||
|
||||
if size == 0 {
|
||||
@@ -48,7 +50,7 @@ func (link *DoublyLink[T]) InsertAtTail(value T) {
|
||||
current = current.Next
|
||||
}
|
||||
|
||||
newNode := NewLinkNode(value)
|
||||
newNode := datastructure.NewLinkNode(value)
|
||||
newNode.Next = nil
|
||||
newNode.Pre = current
|
||||
current.Next = newNode
|
||||
@@ -78,7 +80,7 @@ func (link *DoublyLink[T]) InsertAt(index int, value T) error {
|
||||
|
||||
for current != nil {
|
||||
if i == index-1 {
|
||||
newNode := NewLinkNode(value)
|
||||
newNode := datastructure.NewLinkNode(value)
|
||||
newNode.Next = current.Next
|
||||
newNode.Pre = current
|
||||
|
||||
@@ -161,7 +163,7 @@ func (link *DoublyLink[T]) DeleteAt(index int) error {
|
||||
// Reverse the linked list
|
||||
func (link *DoublyLink[T]) Reverse() {
|
||||
current := link.Head
|
||||
var temp *LinkNode[T]
|
||||
var temp *datastructure.LinkNode[T]
|
||||
|
||||
for current != nil {
|
||||
temp = current.Pre
|
||||
@@ -176,7 +178,7 @@ func (link *DoublyLink[T]) Reverse() {
|
||||
}
|
||||
|
||||
// GetMiddleNode return node at middle index of linked list
|
||||
func (link *DoublyLink[T]) GetMiddleNode() *LinkNode[T] {
|
||||
func (link *DoublyLink[T]) GetMiddleNode() *datastructure.LinkNode[T] {
|
||||
if link.Head == nil {
|
||||
return nil
|
||||
}
|
||||
File renamed without changes.
@@ -3,11 +3,13 @@ package datastructure
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
"github.com/duke-git/lancet/datastructure"
|
||||
)
|
||||
|
||||
// SinglyLink is a linked list. Whose node has a Value generics and Next pointer points to a next node of the link.
|
||||
type SinglyLink[T any] struct {
|
||||
Head *LinkNode[T]
|
||||
Head *datastructure.LinkNode[T]
|
||||
length int
|
||||
}
|
||||
|
||||
@@ -18,7 +20,7 @@ func NewSinglyLink[T any]() *SinglyLink[T] {
|
||||
|
||||
// InsertAtHead insert value into singly linklist at head index
|
||||
func (link *SinglyLink[T]) InsertAtHead(value T) {
|
||||
newNode := NewLinkNode(value)
|
||||
newNode := datastructure.NewLinkNode(value)
|
||||
newNode.Next = link.Head
|
||||
link.Head = newNode
|
||||
link.length++
|
||||
@@ -36,7 +38,7 @@ func (link *SinglyLink[T]) InsertAtTail(value T) {
|
||||
current = current.Next
|
||||
}
|
||||
|
||||
newNode := NewLinkNode(value)
|
||||
newNode := datastructure.NewLinkNode(value)
|
||||
newNode.Next = nil
|
||||
current.Next = newNode
|
||||
|
||||
@@ -65,7 +67,7 @@ func (link *SinglyLink[T]) InsertAt(index int, value T) error {
|
||||
|
||||
for current != nil {
|
||||
if i == index-1 {
|
||||
newNode := NewLinkNode(value)
|
||||
newNode := datastructure.NewLinkNode(value)
|
||||
newNode.Next = current.Next
|
||||
current.Next = newNode
|
||||
link.length++
|
||||
@@ -144,7 +146,7 @@ func (link *SinglyLink[T]) DeleteAt(index int) error {
|
||||
|
||||
// Reverse the linked list
|
||||
func (link *SinglyLink[T]) Reverse() {
|
||||
var pre, next *LinkNode[T]
|
||||
var pre, next *datastructure.LinkNode[T]
|
||||
|
||||
current := link.Head
|
||||
|
||||
@@ -159,7 +161,7 @@ func (link *SinglyLink[T]) Reverse() {
|
||||
}
|
||||
|
||||
// GetMiddleNode return node at middle index of linked list
|
||||
func (link *SinglyLink[T]) GetMiddleNode() *LinkNode[T] {
|
||||
func (link *SinglyLink[T]) GetMiddleNode() *datastructure.LinkNode[T] {
|
||||
if link.Head == nil {
|
||||
return nil
|
||||
}
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -3,11 +3,13 @@ package datastructure
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
"github.com/duke-git/lancet/datastructure"
|
||||
)
|
||||
|
||||
// LinkedStack implements stack with link list
|
||||
type LinkedStack[T any] struct {
|
||||
top *StackNode[T]
|
||||
top *datastructure.StackNode[T]
|
||||
length int
|
||||
}
|
||||
|
||||
@@ -40,7 +42,7 @@ func (s *LinkedStack[T]) IsEmpty() bool {
|
||||
|
||||
// Push element into stack
|
||||
func (s *LinkedStack[T]) Push(value T) {
|
||||
newNode := NewStackNode(value)
|
||||
newNode := datastructure.NewStackNode(value)
|
||||
top := s.top
|
||||
if top == nil {
|
||||
s.top = newNode
|
||||
File renamed without changes.
Reference in new issue
Block a user