tgoop.com/go_interview_lib/399
Create:
Last Update:
Last Update:
💬 Как развернуть односвязный список в Go? Приведите пример кода, который создает три элемента односвязного списка, связывает их последовательно и разворачивает этот список в обратную сторону.
Для разворота односвязного списка в Go нужно создать структуру для представления узлов списка, инициализировать элементы списка, связать их, а затем развернуть их порядок
package main
import (
"fmt"
)
// Определение структуры узла односвязного списка
type LinkNode struct {
next *LinkNode
value int
}
// Метод для печати элементов списка
func (l *LinkNode) Print() {
for current := l; current != nil; current = current.next {
fmt.Print(current.value)
if current.next != nil {
fmt.Print(" -> ")
}
}
fmt.Println()
}
func main() {
// Инициализация элементов списка
var n1, n2, n3 = LinkNode{value: 1}, LinkNode{value: 2}, LinkNode{value: 3}
// Связывание элементов
n1.next, n2.next = &n2, &n3
// Вывод исходного списка
fmt.Println("Исходный список:")
n1.Print() // 1 -> 2 -> 3
// Разворот списка
var prev, next *LinkNode
for current := &n1; current != nil; {
next, current.next = current.next, prev
prev, current = current, next
}
// Вывод развернутого списка
fmt.Println("Развернутый список:")
prev.Print() // 3 -> 2 -> 1
}
BY Библиотека Go для собеса | вопросы с собеседований
Share with your friend now:
tgoop.com/go_interview_lib/399