GO_INTERVIEW_LIB Telegram 399
💬 Как развернуть односвязный список в 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
}
👍6



tgoop.com/go_interview_lib/399
Create:
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

View MORE
Open in Telegram


Telegram News

Date: |

Select: Settings – Manage Channel – Administrators – Add administrator. From your list of subscribers, select the correct user. A new window will appear on the screen. Check the rights you’re willing to give to your administrator. 2How to set up a Telegram channel? (A step-by-step tutorial) 3How to create a Telegram channel? It’s yet another bloodbath on Satoshi Street. As of press time, Bitcoin (BTC) and the broader cryptocurrency market have corrected another 10 percent amid a massive sell-off. Ethereum (EHT) is down a staggering 15 percent moving close to $1,000, down more than 42 percent on the weekly chart. Step-by-step tutorial on desktop:
from us


Telegram Библиотека Go для собеса | вопросы с собеседований
FROM American