2026-05-09 18:11:45 +00:00
|
|
|
|
package main
|
|
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
|
"bufio"
|
|
|
|
|
|
"fmt"
|
|
|
|
|
|
"math/rand"
|
|
|
|
|
|
"os"
|
2026-05-09 19:34:03 +00:00
|
|
|
|
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!")
|
|
|
|
|
|
|
2026-05-09 19:34:03 +00:00
|
|
|
|
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)
|
2026-05-09 19:34:03 +00:00
|
|
|
|
data := ds.NewData(nameStr, phoneStr)
|
2026-05-09 18:11:45 +00:00
|
|
|
|
|
2026-05-09 19:34:03 +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")
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|