您的位置:首页 > 其它

双向循环链表的插入删除

2013-04-21 13:00 176 查看
#include <stdio.h>

#include <unistd.h>

#include<stdlib.h>

#define insert(p){\

p->next=head;\

p->prev=head->prev;\

head->prev->next=p;\

head->prev=p;\

}

#define for_each_task(p)\

for (p = head ; (p = p->next) != head;)\

printf("%d\n",p->pid);

struct task

{

int pid;

struct task *prev;

struct task *next;

};

struct task *head;

void insert_task(int pid)

{

struct task *p=(struct task*)malloc(sizeof(struct task));

p->pid=pid;

insert(p);

}

void init()

{

head=(struct task *)malloc(sizeof(struct task));

head->pid=0;

head->prev=head;

head->next=head;

}

int main()

{

int i;

 init();

for(i=1;i<4;i++)

insert_task(i);

struct task *p;

for_each_task(p);

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐