Как развернуть связный список на golang?

Не понимаю как развернуть связный список. Я уже совсем запутался.

type LinkedList struct {
	name   string
	length int
	head   *ItemLL
}

type ItemLL struct {
	value string
	next  *ItemLL
}

func (l *LinkedList) Reverse() {

	fmt.Println(l.head)
	fmt.Println(l.head.next)
	fmt.Println(l.head.next.next)

	var top *ItemLL

	for l.head != nil {
		buf := l.head.next
		l.head.next = top
		top = l.head
		l.head = buf
	}
}
  • Вопрос задан
  • 3436 просмотров
Решения вопроса 1
zagayevskiy
@zagayevskiy
Android developer at Yandex
Примерно так же как на любом языке. Го не знаю, так что сорри.
func (l *LinkedList) Reverse() {

  var cursor *ItemLL := l.head
  var prev *ItemLL := nil

  for cursor != nil {
    var next := cursor.next
    cursor.next := prev
    prev := cursor
    cursor := next
  }
   l.head := prev
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы