Chinaunix首页 | 论坛 | 博客
  • 博客访问: 449805
  • 博文数量: 179
  • 博客积分: 3236
  • 博客等级: 中校
  • 技术积分: 1860
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-25 19:13
文章分类

全部博文(179)

文章存档

2011年(34)

2008年(8)

2007年(27)

2006年(110)

分类: LINUX

2011-05-04 09:34:18

循环链表

在循环链表中,可以从任意一个节点P出发找到它的直接前驱,而不是从head出发。其算法C语言描述如下:
typedef struct node
{
    int data;
    struct node *next;
}NODE;
NODE *prev(NODE *head,NODE *p)
{
     NODE *q;
     q=p->next;
     while(q->next!=p)
     q=q->next;
     return (q);
}
循环链表的其他特性。
范例1:将2个线性表链接起来

范例2:将单向循环链表倒置
 
void invert_list(List head)
{
    q=head;
    p=head->next;
    r=p->next;
    do
    {
        p->next=q;
        q=p;
        p=r;
        r=r->next;
    }while(p!=head->next);
}


阅读(677) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~