这段代码:
PCB *pcb_temp = *pcb_head; PCB *next = (*pcb_head)->next;//get the next value since it will be the next head //store all the heads values int storepid = pcb_temp->pid; int storeat = pcb_temp->AT; int storepriority=pcb_temp->priority; int storebt=pcb_temp->BT; int storert=pcb_temp->RT; int storewt=pcb_temp->wT;
需要在循环之前的每个循环上完成,而不仅仅是一次。否则,您将继续将相同的项目追加到最后而不是当前的头项目。
也, LL_add() 不能用于附加到列表,因为它总是假设它正在添加到头部:
LL_add()
pcb_new -> next = *pcb_head; *pcb_head = pcb_new;
如果要附加到尾部,则需要如下所示的代码:
pcb_new -> next = NULL; *tail_ptr = pcb_new;
编辑:
看起来 LL_add() 只用于附加到尾部而不是头部。在这种情况下,只需更改此行:
pcb_new -> next = *pcb_head;
对此:
pcb_new -> next = NULL;
但是,如果您确实进行了此更改,则不要尝试使用此修改版本插入头部,因为它不起作用。