数据结构考研复习(自用非408)顺序表

2.1线性表的基本概念        

        线性表按存储方式的不同,可以划分为顺序表和链表。线性表是具有相同数据类型的n个数据元素的有限序列,n为表长,当n=0时为空表。

线性表是一种逻辑结构,具有以下特点:

        表中的元素具有先后次序,具有逻辑上的顺序关系

        表中元素的数据类型要相同

        表中元素的个数有限

2.2线性表的顺序表示

        概念:顺序表是线性表的顺序存储,用一组地址连续的存储单元依次存放线性表中的数据元素,从而使得在逻辑上相邻的数据元素在物理上也相邻。

        顺序表的特点是表中元素的逻辑顺序与其物理顺序相同

        当要按位查找表中的一个元素的时候不需要遍历,通过首地址和元素序号只需要O(1)就可以得到某一位上的元素,故顺序表具有可以随机访问的优点。

顺序表的基本操作——在指定位置插入元素,平均时间复杂度为O(n)

bool ListInsert(SqList &L,int i,int e){     //在指定位置插入的元素
    if(i<1||i>L.length+1){      //插入操作有效范围只能在1到L.length+1之间
        return false;
    }
    if(L.length==MaxSize){      //当前存储空间已满
        return false;
    }
    for(int j=L.length;j>=i;j--){       //当数组里有L.length个元素的时候,数组下标的最后一个是L.length-1
        L.data[j] = L.data[j-1];        //循环把每一个元素都赋给后一个位置,直到空出待插入位置
    }
    L.data[i] = e;
    L.length++;
    return true;
}

顺序表的基本操作——删除指定位置的元素,平均时间复杂度为O(n)

bool ListDelete(SqList &L,int i,int &e){        //删除指定位置上的元素
    if(L.length == 0){      //当前表为空
        return false;
    }
    if(i<1||i>L.length){        //不满足可删除范围
        return false;
    }
    e = L.data[i-1];
    for(int j=i-1;j<L.length;j++){      //找到待删除位置,然后逐个把之后的元素覆盖前一个
        L.data[i-1] = L.data[i];
    }
    L.length--;
    return true;
}

顺序表的基本操作——顺序查找,平均时间复杂度为O(n)

int LocateElem(SqList L,int e){     //顺序查找元素
    for(int i=0;i<L.length+1;i++){
        if(L.data[i]==e){
            return i+1;
        }
    }
    return false;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值