双向循环链表

双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。

先定义一个数据结构:

1 struct Date
2 {
3     int data;
4     struct Date *prior;
5     struct Date *next;
6 }Note;

1、插入操作

在平p、q间插入一个节点s.

主要完成两次握手:p和s,q和s;

(1)p和s的握手

p->next=s;
s->prior=p;

(2)s和q的握手

s->next=q;
q->prior=s;

原来的链接关系为p->next=q; q->prior=p;现在只知道p节点,且q=p->next;

因此,以上两次握手为:

             
s->prior=p;       //s的前驱为p
p->next->prior=s;//p的后继(即q)的前驱为s
s->next=p->next;//s的后继为p的后继(即q) p
->next=s; //p的next为s

2、删除操作

删除p、q间的s节点

s->prior->next=s->next;
s->next->prior=s->prior;

 

转载于:https://www.cnblogs.com/flash610/archive/2013/05/14/3078140.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值