2026-rff_mp/stepushovgs/data-structures/source/tests/test_ll/main.go

88 lines
1.9 KiB
Go
Raw Normal View History

2026-05-09 18:11:45 +00:00
package main
import (
"bufio"
"fmt"
"math/rand"
"os"
ds "source/pkg/data_struct"
ll "source/pkg/linked_list"
// dg "source/pkg/gendata"
2026-05-09 18:11:45 +00:00
)
const countNumbers = 64
func isInArr(arr []int, length int, target int) bool {
for i := 0; i < length; i++ {
if arr[i] == target {
return true
}
}
return false
}
func pressEnterToContinue() {
fmt.Print("Нажмите Enter для продолжения...")
bufio.NewReader(os.Stdin).ReadBytes('\n')
}
func main() {
fmt.Println("hello world!")
var head *ll.LinkedList = nil
2026-05-09 18:11:45 +00:00
arr := make([]int, countNumbers)
var temp int
for i := 0; i < countNumbers; i++ {
// Генерируем уникальное случайное число
for {
temp = rand.Intn(100) // 0 до 99
if !isInArr(arr, i, temp) {
break
}
}
arr[i] = temp
nameStr := fmt.Sprintf("name_%02d", temp)
phoneStr := fmt.Sprintf("phone_%02d", temp)
data := ds.NewData(nameStr, phoneStr)
2026-05-09 18:11:45 +00:00
head = head.Insert(*data)
2026-05-09 18:11:45 +00:00
fmt.Printf("%d ", arr[i])
// pressEnterToContinue()
}
pressEnterToContinue()
fmt.Printf("\n\nКоличество узлов: %d\n", head.Len())
fmt.Println("\ninorder traversal:")
pressEnterToContinue()
head.PrintAll()
pressEnterToContinue()
tarName := "name_44"
fmt.Printf("\nПоиск '%s' перед удалением: ", tarName)
if found, ok := head.Search(tarName); ok {
fmt.Printf("Найден: %s\n", found)
} else {
fmt.Printf("НЕ найден!\n")
}
fmt.Printf("\nУдаляем элемент с значением %s:\n", tarName)
head, _ = head.Delete(tarName)
fmt.Printf("\nКоличество узлов после удаления: %d\n", head.Len())
fmt.Printf("Поиск '%s' после удаления: ", tarName)
if found, ok := head.Search(tarName); ok {
fmt.Printf("ОШИБКА! Все еще существует: %s\n", found)
} else {
fmt.Printf("Успешно удален\n")
}
}