循环链表

循环链表

一种头尾相接的链表,表中最后一个结点的指针域指向头结点 ,整个链表形成一个环即没有NULL指针,因此遍历操作时,终止条件是否等于头指针

优:从表中任一结点出发,均可找到表中其他结点


头指针表示单循环链表:

  • 找a1的时间复杂度:O(1)
  • 找an的时间复杂度:O(n)

当表的操作常常在首尾进行时可使用尾指针表示单循环链表

  • a1存储位置是:r->next->next;时间复杂度:O(1)
  • an存储位置是:r;时间复杂度:O(1)

带尾指针循环链表的合并

image

  1. p存表头结点:p=Ta->next;
  2. Tb表头连Ta表尾:Ta->next=Tb->next->next;
  3. 释放Tb表头结点:free(Tb->next);
  4. 修改指针:Tb->next=p;
LinkList Connect(LinkList Ta,LinkList Tb){
    LinkList p;
    p=Ta->next;
    Ta->next=Tb->next->next;
    free(Tb->next);
    Tb->next=p;
    return Tb;
}

时间复杂度是O(1)

posted @ 2023-01-30 20:03  原语  阅读(63)  评论(0编辑  收藏  举报