尾指针及其简单应用

本文探讨了尾指针在循环链表中的重要性,如何利用尾指针对链表操作进行优化,例如在O(1)时间内合并两个链表。同时,提供了将两个线性表A和B连接的简洁实现,强调了正确管理和更新尾指针以确保链表结构完整的重要性。
摘要由CSDN通过智能技术生成

尾指针及其简单应用

循环链表如果拿到最后结点,若没有尾指针(rear),那么需要O(n)的时间。如果有的话,只需要O(1)的时间。
如果有两个链表,需要将他们连接,拥有尾指针只需要O(1)的时间复杂度。
此时,判断循环链表是否为空的方法:rear是否等于rear->next。

一道题目:将两个线性表A(a1,a2,a3…)和B(b1,b2,b3…)连接成一个线性表。

思路:A的rear不再指向A的head,而是指向B的head->next;然后需要将B的head释放(一个链表只能有一个头结点);最后,将B的rear重新指向A的head。

简单实现:

Node * Connect(Node *a_rear,Node *b_rear){ //参数是两个尾指针 
    Node *p = a_rear->next;//p指向A的head

    a_rear->next = b_rear->next->next; //a->rear指向B的head->next 

    free(b_rear->next);

    b_rear->next = p;
    return b_rear; 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值