2013-05-03 12 views
1

Мой код компилируется правильно, но когда я выполняю, insertLast вызывается дважды, а затем моя программа зависает. Я не понимаю, почему он будет работать дважды, но затем замерзнет.Замораживание при добавлении в связанный список (C)

Код для отправки узлов моего связного списка:

int main() 
    { 
    LinkedList* canQueue=createList(); 

    for(ii = 0; ii < 10; ii++) 
     { 
     TinCan* tempCan = (TinCan*) malloc(sizeof(TinCan)); 
     insertLast(canQueue, tempCan); 
     } 

    return 0; 
    } 

И связанных методов списка, которые я использовал:

LinkedList* createList() /*creates empty linked list*/ 
    { 
     LinkedList* myList; 
     myList = (LinkedList*)malloc(sizeof(LinkedList)); 
     myList->head = NULL; 
     return myList; 
    } 



void insertLast(LinkedList* list, TinCan *newData) 
    { 
    int ii = 1; 
    LinkedListNode* newNode = (LinkedListNode*)malloc(sizeof(LinkedListNode)); 
    newNode->data = newData; 
    newNode->next = NULL; 

     if(list->head == NULL) 
      { 
     list->head = newNode; 
     newNode->next=NULL; 
     } 
    else 
     { 
     LinkedListNode* current = list->head; 
     while (current->next != NULL) 
      { 
      current = current->next; 
      } 
     current->next = newNode; 
     ii++; 

     } 
} 
+2

Есть что-то странное, вы не объявляете 'ii' в основном, и у вас есть локальный' ii' в 'insertLast', который, кажется, ничего не делает. –

ответ

1

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

list->head = newNode; 
    newNode->next=NULL; 
    current = list->head; 
    current->next = newNode; 

на старте у вас есть голова, как newnode то тока в качестве главы (ток = newnode), то current.next = newnode (newnode.next = newnode). Поскольку вы находитесь в цикле while, вы будете прокручивать этот единственный узел навсегда, пока не выйдете из программы.

+0

Спасибо, я вижу проблему сейчас – Dawson

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