Вопрос по связанному списку - PullRequest
0 голосов
/ 26 марта 2011

что это значит?

void add(struct node **root, int x)
 {
      struct node *conductor;
      if(*root==NULL)
      {
          (*root)=malloc(sizeof(struct node));
          (*root)->x=x;
          (*root)->next=NULL ;         
      }
      else
      {
          conductor = *root;
          while(conductor->next!=NULL)
          {
               conductor = conductor -> next;             
          }                
          conductor->next=malloc(sizeof(struct node));
          conductor->next->x=x;
          conductor->next->next=NULL;
     } 
  }

conductor=Conductor->next; что это значит? Мне нужно кормить свое любопытство, и я хочу знать, верно ли мое представление о

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

Ответы [ 4 ]

1 голос
/ 26 марта 2011

Связанный список состоит из серии объектов, каждый из которых указывает на следующий элемент в списке.Строка conductor = conductor->next; просто обновляет переменную conductor (которая указывает на элемент списка, struct node), чтобы указывать на следующий элемент в списке.

Обновление: статья в Википедии о связанный список предлагает хорошее визуальное представление такой структуры данных.

0 голосов
/ 15 февраля 2015

Согласно тому, что вы просили:

conductor=conductor->next means that the means that the conductor will move 

до следующей ячейки памяти.

Например:

void insert(struct node **ptr)
{
  struct node *tmp;
  tmp=*ptr;
  tmp=tmp->next;
}

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

tmp = tmp-> next означает, что он указывает на следующую ячейку памяти, которая зависит от компилятора, еслиуказатель sizeof равен 4 байтам, он переместится на 4 байта.

0 голосов
/ 26 марта 2011

conductor=*root устанавливает указатель проводника так, чтобы он указывал на первый элемент в корне списка

conductor=conductor->next устанавливает указатель проводника так, чтобы он указывал на следующий элемент в корне списка.

По сравнению с массивом с длиной один, первая строка установит указатель на 0-й элемент массива, а следующая строка установит указатель на 1-й элемент. Если это не имеет смысла, вам следует ознакомиться со связанными списками и узнать, почему вы их используете, а не массивы.

0 голосов
/ 26 марта 2011

conductor -> next это просто способ записи (*conductor).next.

Так как проводник является указателем на структуру, вы не можете получить доступ к его элементам напрямую через проводник. В этом случае это означает, что conductor теперь будет указывать на следующий элемент в списке (тот, который conductor->next указал ранее)

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