Внедрение функции fa, которая добавляет и сортирует данные в односвязном списке (addort)? - PullRequest
0 голосов
/ 24 сентября 2011

Я очень плохо знаком с C ++, поэтому иногда сложно понять синтаксис. В любом случае, я должен реализовать функцию, которая добавляет и сортирует данные в связанный список. Например, если я передам 2 в список [1,4,5], тогда я должен получить [1,2,4,5]

Вот то, что я написал до сих пор, и нет, это не работает, я продолжаю получать "бла-бла, не объявленный в этой области"

void addSorted(Data * ){
  temp = 0;
  if (head == NULL) {
      head = new LinkNode(newData);
  }
  else {
      LinkNode * current = head;
      while (current->next != NULL) {
              current = current->next;
          }
      if(current->data > current->next->data){
          temp = current->data;
          current->data = current->next->data;
          current->next->data = temp;
      }
      current->next = new LinkNode(newData);
  }
}

Кто-то, пожалуйста, помогите мне, я использую структуру LinkNode, я думаю, который уже дан, в дополнение к куче других функций, таких как добавление, вставка, удаление, получение и размер

Я не просто хочу получить ответ, мне нужно знать, почему то, что у меня есть, не работает.

1 Ответ

1 голос
/ 24 сентября 2011

Надеюсь, что вы действительно приложили к этому усилия .. Я публикую всю функцию для вставки данных в список в отсортированном порядке, который я написал давно

void addData(node * head, int data){ if(head == NULL) { // First node node * temp = new node; temp -> data = data; temp -> next = NULL; head = temp; root = head; }else{ node * prev = NULL; while(head -> next != NULL){ // Sorted Addition Logic is HERE if(data >= head -> data){ prev = head; head = head -> next; continue; }else{ node * temp = new node; temp -> data = data; temp -> next = head; if(prev != NULL) prev -> next = temp; else head = temp; break; } } if(head -> next == NULL){ node * temp = new node; temp -> data = data; head -> next = temp; temp -> next = NULL; } } }

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

...