改用尾指针表示单循环链表,寻找头指针和尾指针很方便,快速。
如果用头指针记录循环链表,寻找时间为Q(n)
如果用尾指针记录循环链表,寻找头指针rear->next->next,查找时间Q(1)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 typedef int datetype; 2 typedef struct node{ 3 datetype data; 4 struct node *next; 5 } linklist; 6 linklist *head,*p; 7 8 linklist *CONNECT(linklist *ra,linklist *rb){ 9 linklist *p; 10 p=ra->next; //保护好ra的头指针 11 ra->next=rb->next->next; //第一个链表的尾指针只想第二次链表的头指针 12 free(rb->next); //释放第二个链表的头指针 13 rb->next=p; //合并之后,第二个指针指向第一个链表的头指针 14 return rb; //返回新链表的的尾指针 15 }