2014-09-21 141 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; 
}