我有一个双链表的文件,其中包含一组进程标识符和一些状态信息。C编程链接列表并删除
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;
};
我要删除我的列表的元素的方法:
{
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;
}
}
}
什么是错我的删除功能?当我尝试打印我的列表时,我似乎陷入了无限循环。以前我认为这是我使用免费()的方式,但显然不是从回复:)
谢谢!
通常你通过使用malloc分配您在列表中插入一切克服它。 – 2012-04-08 03:27:27
**是如何分配的? – 2012-04-08 03:27:59