BG Development


  Reply to this topicStart new topicStart Poll

> Свързан списък - динамична реализация
erntTt
Публикувано на: 18-09-2018, 22:30
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 4
Регистриран на: 18.09.18



Здравейте, искам да попитам за един пример относно Свързан списък - динамична реализация, защото не разбирам точно как предишния обект съдържа референция към новия обект...
Ако може да помогнете...

Примера е от книгата - "Въведение в програмирането с Java" - Пример

Споделям според мен какво се случва и до колко разбирам това, което се има впредвид -
Създава се първо някакъв обект от DynamicList object = new DynamicList(); , след което използваме метода object.add("Item" да речем) и след като е първи обект то head == null и се влиза в if-а и следователно на head се присвоява нов обект, който съдържа element = "Item", тоест на текущия обект подаваме параметъра на конструктора и next == null; До тук мисля че е добре, но при създаване на следващ обект не разбирам какво се случва - използваме отново метода object.add("Item2") и влиза в elsa, защото head вече не е null, а пази някаква референция, т.е. head се явява първия обект , tail - последния и двете до момента съдържат едно и също - референция към обект в heap-a Object element = "Item"; и Node next = null; при добавяне на втория обект се създава нов обект от Node и се използва втория конструктор при който на текущия елемент отново се подава item - тоест Item2 , a на prevNode - tail и точно тук не разбирам точно какво прави това - prevNode.next = this; - т.е. на tail.next = this; , не го разбирам това , мисля че точно това е за референцията, но така както е ми се струва,че е в обратна посока - 1 < 2 < 3 , а не би ли трябвало да е 1 > 2 > 3 ?


Извинете ако мисълта ми е грешна или е ненужна , всеки съвет и помощ са добре дошли , благодаря, просто не мога да го разбера icon_smile.gif

Това мнение е било редактирано от erntTt на 18-09-2018, 22:32
PMEmail Poster
Top
thrawn
Публикувано на: 19-09-2018, 08:38
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 1842
Регистриран на: 17.01.17



Това точно прави свързания списък. Всеки възел има указател който сочи адреса на следващия възел. Връзката между елементите се получава точно от първия към последния (1 > 2 > 3 ... )

Струва ми се, че в примера е направена лека глупост. Не е работа на отделните възли да обновяват адресите а на класът който имплементират списъкът.

Това мнение е било редактирано от thrawn на 19-09-2018, 08:40
PMEmail Poster
Top
miron
Публикувано на: 19-09-2018, 08:43
Quote Post



Име: Мирослав Николов
Група: Потребител
Ранг: Старо куче

Мнения: 611
Регистриран на: 26.04.05



Когато се създава втория обект, tail сочи към първия първоначално. Затова tail.next съответства на object1.next. Затова
CODE
prevNode.next = this;
съответства на next на първия обект да сочи към втория.
След това има
CODE
tail = newNode
Тоест tail вече се насочва към вторият обект.
Надявам се, че така е по-ясно.
PM
Top
erntTt
Публикувано на: 19-09-2018, 11:11
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 4
Регистриран на: 18.09.18



Да благодаря, мисля че го разбрах т.е. tail държи референция към първия създаден обект с полета - Object object и Node node в heap-a, a в heap-a object извиква конструктора на Object и създава референция към object , както и Node и при създаване на втория обект на конструктора се подава tail и там на първия обект референцията, която е към Node в heap-a вътре се пренасочва към новия обект или към Node - a на новия обект ?? Или към обекта - object?
PMEmail Poster
Top
erntTt
Публикувано на: 19-09-2018, 12:43
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 4
Регистриран на: 18.09.18



По - скоро към новия обект, а на новия обект next-a би трябвало отново да е null...
PMEmail Poster
Top
wqw
Публикувано на: 19-09-2018, 13:31
Quote Post


Group Icon
Име: Владимир Висулчев
Група: VIP
Ранг: Почетен член

Мнения: 5853
Регистриран на: 10.06.04



CODE
+
|
|       tail +-----------------------------------------------------+
|                                                                  |
|       head +-------+                                             |
|                    |                                             |
|                    |                                             |
|              +-----v--+      +--------+      +--------+      +---v----+
|              | Item1  |   +--> Item2  |   +--> Item3  |   +--> Item4  |
|              +--------+   |  +--------+   |  +--------+   |  +--------+
|              | next +-----+  | next +-----+  | next +-----+  | next +------> NULL
|              |        |      |        |      |        |      |        |
|              +--------+      +--------+      +--------+      +--------+
|
+

Това ти е картинката след 4 добавяния.

Q: Какво се случва като се добавя Item5?
A: Само две неща:
1. next на Item4 вече сочи към Item5
2. tail сочи към Item5

cheers,
</wqw>


--------------------
PMEmail PosterUsers Website
Top
stewie
Публикувано на: 19-09-2018, 16:45
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 4280
Регистриран на: 14.07.16



wqw, как ги чартаеш тея яки схеми в текстов редактор ?
PM
Top
SuN
Публикувано на: 19-09-2018, 17:10
Quote Post


Group Icon
Име:
Група: Администратор
Ранг: Почетен член

Мнения: 6988
Регистриран на: 27.01.05



Е, че как иначе: EmacsWiki: Artist Mode
https://www.emacswiki.org/emacs/ArtistMode


--------------------
Копирай лесно ударено и - ѝ Ѝ
Замърсяване на въздуха в София - http://aqicn.org/city/bulgaria/sofia/druzhba/
PMEmail Poster
Top
wqw
Публикувано на: 19-09-2018, 17:26
Quote Post


Group Icon
Име: Владимир Висулчев
Група: VIP
Ранг: Почетен член

Мнения: 5853
Регистриран на: 10.06.04



QUOTE (SuN @ 19-09-2018, 17:10)
Е, че как иначе: EmacsWiki: Artist Mode
https://www.emacswiki.org/emacs/ArtistMode

Или това, или http://asciiflow.com/

cheers,
</wqw>


--------------------
PMEmail PosterUsers Website
Top
erntTt
Публикувано на: 20-09-2018, 12:24
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 4
Регистриран на: 18.09.18



Благодаря много на всички за помощта, насочвам се към дървета и графи icon_smile.gif

Това мнение е било редактирано от erntTt на 20-09-2018, 12:24
PMEmail Poster
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2018 | BG Development | All Rights Reserved
RSS 2.0