2014-09-21 138 views
0

我沒有任何問題在中間或LinkedList的開頭插入nodes。但是,最後是不同的。當我嘗試打印值,它給我的地址:enter image description here在LinkList的末尾插入節點C

現在,這裏是我如何建立LinkedList

employeeData ed[4]; 

node *head = NULL, *list = NULL; 

for (int i = 0; i < 4; i++) 
    fscanf(file, "%d %s %d %d %lf", &ed[i].EMP_ID, ed[i].name, &ed[i].dept, &ed[i].rank, &ed[i].salary); 

head = (node *)malloc(sizeof(node)); 

head->employee = ed[0]; 
head->next = NULL; 

list = head; 

for (int i = 1; i < 5; i++){ 

    node *ptr = (node *)malloc(sizeof(node)); 

    ptr->employee = ed[i]; 
    ptr->next = NULL; 

    head->next = ptr; 

    head = head->next; 
} 

這是我如何將節點添加到它:

node *newNode = (node *)malloc(sizeof(node)), *temptr = list, *endNode = list; 

newNode->employee.EMP_ID = id; 
strcpy(newNode->employee.name, name); 
newNode->employee.dept = dept; 
newNode->employee.rank = rank; 
newNode->employee.salary = salary; 
newNode->next = NULL; 

while (endNode->next != NULL) endNode = endNode->next; 

if (id < temptr->employee.EMP_ID){ 
    newNode->next = list; 
    list = newNode; 
} 
else if (id > endNode->employee.EMP_ID){ 
    endNode->next = newNode; 
} 
else{ 

    while ((temptr->next != NULL) && (temptr->next->employee.EMP_ID < newNode->employee.EMP_ID)) 
     temptr = temptr->next; 

    newNode->next = temptr->next; 

    temptr->next = newNode; 
} 

當我嘗試刪除該值時,它會將其刪除。但是,它不顯示該值。

我在做什麼錯?

謝謝

+3

'I <5','編[I]'..'ed [4]'不正確的數據。 – BLUEPIXY 2014-09-21 21:18:15

+0

我不知道爲什麼。但是,當我選擇4而不是5時,它不顯示最後一個記錄(20,BoyBlue ...)。但是,問題肯定存在 – 2014-09-21 21:20:13

回答

0

正如BLUEPIXY所述,問題出在建設中。

索引需要在4 for (int i = 1; i < 4; i++)

還有,我改變了我打印的清單。

while (temp->next != NULL){ 
    printf(""); 
    temp = temp->next; 
} 

while (temp != NULL){ 
    printf(""); 
    temp = temp->next; 
}