循环链表与单链表的区别在于,最后一个结点的指针域。
不带头结点循环链表最后一个结点的指针域指向链表的第一个结点,带头结点的话,最后一个结点的指针域指向头结点。 而单链表中,最后一个结点的指针域为null。
基本运算中的区别在于:链表扫描时候的终点条件;以及在插入和删除操作时候, 需要注意是否需要修改最后一个结点的指针域。
- 获得循环链表的最后一个结点的存储地址
node *rear(node *head) { node *p; if (!head) //循环单链表为空 { p=NULL; } else { p=head; while(p->next != head) p=p->next; } return p; }