linked-list supports index assign and concatenation

This commit is contained in:
2026-07-13 11:34:25 +02:00
parent 072fd9af39
commit 4df222496d
7 changed files with 52 additions and 29 deletions
+13 -4
View File
@@ -117,7 +117,7 @@ func (ls *LinkedList) LastNode() *ListNode {
return ls.last
}
func (ls *LinkedList) Last() (data interface{}, err error) {
func (ls *LinkedList) Last() (data any, err error) {
if ls.last != nil {
data = ls.last.data
} else {
@@ -126,7 +126,8 @@ func (ls *LinkedList) Last() (data interface{}, err error) {
return
}
func (ls *LinkedList) NodeAt(index int) (node *ListNode, err error) {
func (ls *LinkedList) NodeAt(index64 int64) (node *ListNode, err error) {
index := int(index64)
if ls.count == 0 {
err = errorListEmpty()
} else if index > ls.count {
@@ -143,7 +144,7 @@ func (ls *LinkedList) NodeAt(index int) (node *ListNode, err error) {
return
}
func (ls *LinkedList) At(index int) (data interface{}, err error) {
func (ls *LinkedList) At(index int64) (data any, err error) {
node, err := ls.NodeAt(index)
if err == nil {
data = node.data
@@ -151,6 +152,14 @@ func (ls *LinkedList) At(index int) (data interface{}, err error) {
return
}
func (ls *LinkedList) SetItem(index int64, data any) (err error) {
node, err := ls.NodeAt(index)
if err == nil {
node.data = data
}
return
}
func (ls *LinkedList) Insert(index int, data any) *ListNode {
var prev *ListNode
@@ -183,7 +192,7 @@ func (ls *LinkedList) PushBackStringArray(items []string) {
}
}
func (ls *LinkedList) Sub(start, end int) (subList *LinkedList) {
func (ls *LinkedList) Sub(start, end int64) (subList *LinkedList) {
subList = NewLinkedList()
if node, err := ls.NodeAt(start); err == nil {
for i := start; i < end && node != nil; i++ {