双向循环链表的插入删除
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;
}
#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;
}
相关文章推荐
- (C++版)链表(四)——实现双向循环链表创建、插入、删除等简单操作
- 数据结构 P36-37 算法实现 双向循环链表的插入与删除
- 数据结构--双向循环链表--插入和删除
- (C++版)链表(四)——实现双向循环链表创建、插入、删除等简单操作
- (C语言版)链表(四)——实现双向循环链表创建、插入、删除、释放内存等简单操作
- 双向循环链表的插入与删除
- 数据结构双向循环链表的C语言实现(插入,查询,删除)
- 双向非循环递增链表——插入,删除,清空
- 双向循环链表的建立,插入,删除(不带头结点)
- 双向非循环递增链表——插入,删除,清空
- 双向循环链表的插入和删除
- 2016年12月23日学习总结----双向循环链表操作程序(头插、尾插、中间插入、删除)
- 双向循环链表的建立,插入,删除(带头节点)
- 双向循环链表 初始化 插入 删除
- (C语言版)链表(四)——实现双向循环链表创建、插入、删除、释放内存等简单操作
- (C语言版)链表(四)——实现双向循环链表创建、插入、删除、释放内存等简单操作
- (C语言版)链表(四)——实现双向循环链表创建、插入、删除、释放内存等简单操作
- 双向循环链表的插入和删除
- 双向链表的创建、打印、求长、插入、删除、查值、清空、销毁
- 实现双向链表的创建、测长、打印、插入、删除