Ich habe eine Datei mit einer doppelt verknüpften Liste, die eine Reihe von Prozess-IDs und einige Statusinformationen enthält.C Programmierung Linked-Liste und entfernen
struct pr7_process
{
pid_t pid; /* process ID, supplied from fork() */
/* if 0, this entry is currently not in use */
int state; /* process state, your own definition */
int exit_status; /* supplied from wait() if process has finished */
struct pr7_process *next; // a pointer to the next process
struct pr7_process *prev;
};
/* the process list */
struct process_list
{
struct pr7_process *head;
struct pr7_process *tail;
};
Ich habe eine Methode, ein Element von meiner Liste zu entfernen:
{
struct pr7_process *cur;
for(cur = list->head; cur != NULL; cur = cur->next)
{
if (cur->pid == pid)
{
printf("cur pid: %d\n", cur->pid);
cur->state = STATE_NONE;
if(list->head == list->tail)
{
free(cur);
}
else
{
cur->prev->next = cur->next;
cur->next->prev = cur->prev;
free(cur);
}
break;
}
}
}
Was mit meiner entfernen Funktion falsch ist? Ich bekomme scheinbar eine Endlosschleife, wenn ich versuche, meine Liste zu drucken. Zuvor dachte ich, es war die Art, wie ich kostenlos() aber anscheinend nicht aus den Antworten :)
Danke!
Sie es normalerweise überwinden, indem malloc alles, was Sie in der Liste einfügen zuzuordnen. –
Wie ** war ** es dann zugewiesen? –