2015-11-19 7 views
2

Почему это происходит, когда мы пытаемся создать отдельный список, мы делаем Head NULL в классе и не делаем Next of the Head как Null. В функциях связанных списков почему мы делаем Next из узлов Null и не делаем Node Null?Почему мы делаем head null в одиночном списке?

+0

Ваш вопрос не совсем ясен. Объясните. –

+0

Почему мы делаем Head = Null, а не Head-> next = Null? –

+0

Чтобы вы могли проверить, пуст ли пул, проверьте, есть ли 'head == null'. Вы можете установить «head-> next = null», если уже есть первый элемент, на который указывает точка. – m69

ответ

0

Во избежание отходов. Узел списка предназначен для хранения внутри него элемента. Представьте, если бы у вас был пустой список в предложенном вами сценарии, где * обозначает главу списка. Мы хотели бы начать с:

[*???]->NULL 

Где ??? просто некоторая фиктивная переменная для неиспользуемого элемента. Мы уже тратить узел списка, когда мы могли бы просто сделать это:

*NULL 

Аналогично, если мы рассмотрим непустой список, мы могли бы с вашим делом:

[*123]->[456]->[789]->[???]->NULL 

... когда мы могли бы просто:

[*123]->[456]->[789]->NULL 

конечно, вы могли бы увеличить это перезаписать эту фиктивную переменную, если размер списка от 0 до 1, но теперь включает в себя дополнительное ветвление и так далее, и мы в конечном итоге получить более сложное nструкции и накладные расходы на обработку.

Так что этого очень мало, и это может быть очень много, чтобы быть потерянным.

В функциях, касающихся связанных списков, почему мы делаем Next из узлов Null и не делаем Node Null?

Я не совсем понял эту часть. Если мы говорим о вставке нового узла в списке, например, мы могли бы это:

[new node: 456]->???  [*123]->NULL 

Затем, чтобы она указывала на голове:

[new node: 456]->[*123]->NULL 

... а затем сделайте головную точку новым узлом.

[*456]->[123]->NULL 

Так должно быть, как правило, не раз, когда вы устанавливаете следующий указатель узла в нуль, если это не в голове, которая случается быть пустым, или в ответ на удаление хвоста.

Смежные вопросы