循环链表
在循环链表中,可以从任意一个节点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);
}
阅读(711) | 评论(0) | 转发(2) |