пожалуйста, кто-нибудь может помочь мне объяснить связанный список? - PullRequest
0 голосов
/ 21 августа 2010

Я много пытался изучить связанный список. Но все мои усилия были напрасны. Пожалуйста, кто-нибудь может помочь мне понять связанный список, предоставив свой собственный код? Заранее спасибо.

Ответы [ 4 ]

12 голосов
/ 21 августа 2010

Связанный список - это просто список элементов (обычно называемых узлами), где каждый узел имеет ссылку (или указатели в C) на следующий узел:

http://img837.imageshack.us/img837/5613/ll1s.png

Вы отслеживаете список, имея указатель на первый узел («голову») и последний узел указывает на null

alt text

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

alt text

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

Общим преимуществом связанных списков над массивами является то, что вы можете вставлять и удалять элементы за O (1) (постоянное) время.Недостатком является то, что у вас есть O (N) произвольного доступа.

Подробнее см. Википедия .

2 голосов
/ 21 августа 2010

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

Ну, связанный список выглядит так: у каждого элемента есть «контент» и адрес памяти (подсказка) для получения следующего элемента. Следующий предмет, конечно же, имеет еще один приз и другую подсказку.

1 голос
/ 21 августа 2010

Связанный список реализован в виде списка «узлов».Узлы связаны друг с другом с помощью указателей.Следующий код описывает один узел.Указатель на следующий узел вызывается следующим.В моем примере каждый узел содержит целочисленное значение в качестве своих данных.


struct node {
   int val;
   struct node * next;
};

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

Мы можем помочь вам больше, если вы конкретно сообщите нам, какие у вас проблемы ...

1 голос
/ 21 августа 2010

Связанный список - это серия объектов, каждый из которых указывает на следующий в списке.Последний элемент в списке имеет NULL как указатель next.

Вы отслеживаете заголовок списка в своей программе, чтобы вы могли просматривать список с самого начала.

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

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

This:

typedef struct tagProp
{
   rtPropertyKey   key;
   rtProperty      property;
   struct tagProp *next;
} TProperty;

определяет список поиска ключа / значения свойства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...