顺序表的反转

实现一个高效算法,将顺序表L的所有元素逆置,要求空间复杂度为O(1)

本题来自王道数据结构2023顺序表中的综合应用题的第三题,题中要求反转一个顺序表,并要求空间复杂度为O(1)

分析:
由于有空间复杂度的约束,所以我们不能简单的重现new一个链表,然后使用头插法去创建。因此为了解决问题很自然想到了双指针,通过前后对比来轻松实现顺序表的反转

//定义一个顺序表
typedef struct {
    ElementType *elem;
    int length;
} sqList;
bool ReverseList(sqList &L) {
    if (L.length == 0)
        return false;
    //不管原来有多少个元素,我们都只需要交换len/2次,剩余的元素会恰好留在中间
    for (int i = 0; i < L.length / 2; ++i) {
        int temp = L.elem[i];
        //与对应的后半部的元素互换
        L.elem[i] = L.elem[L.length - i - 1];
        L.elem[L.length - i - 1] = temp;
    }
    return true;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值