Оберон-клуб «ВЄДАsoft»
https://zx.oberon.org/forum/

Можно ли не пробегая по всему списку добавить в конец элемент?
https://zx.oberon.org/forum/viewtopic.php?f=79&t=332
Страница 1 из 1

Автор:  Len [ 24 сен 2017, 19:16 ]
Заголовок сообщения:  Можно ли не пробегая по всему списку добавить в конец элемент?

Можно ли при добавлении элемента в конец списка обойтись без его перебора кажый раз? Может какую-то переменную выделить, которая бы всегда ссылалась на конец списка и обновлять эту ссылку при каждом дополнении... Это возможно?

Автор:  Zorko [ 24 сен 2017, 19:44 ]
Заголовок сообщения:  Re: Можно ли не пробегая по всему списку добавить в конец элемент?

Я когда-то делал такой двусвязный список: там каждый элемент списка имел поля prev и next, ссылающиеся на предыдущий и следующий элемент (если prev=NIL, значит это первый элемент списка; если next=NIL, значит последний). Кроме того, были переменные first и last — указатели на первый и последний элемент списка. Самое главное — корректно обновлять их после каждого добавления/удаления элементов. А Вы в своей задаче можете использовать односвязный список, если, например, не нужно пробегать от последнего элемента к первому.
Код: "OBERON"
  1. TYPE
  2. Task = POINTER TO RECORD
  3. prevTask: Task;
  4. nextTask: Task;
  5. ...
  6. END;
  7. VAR
  8. firstTask, lastTask: Task;

Страница 1 из 1 Часовой пояс: UTC + 2 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/