2.2.2 线性表的基本操作 插入、删除、查找 (王道考研)

线性表的基本操作 插入、删除、查找

之前对线性表的初始化以及扩容操作进行了编写,现在进行插入删除操作

1. 插入操作

ListUnsert(L,i,e)

SqList ListInsert(SqList L, int i, int e) {
    for (int j = L.length; j < i; j--) {
        L.data[j] = L.data[j-1];
    }
    L.data[i-1] = e;
    L.length++;
    return L;
}

但这种操作不利于其他开发人员的使用,需要让代码可用性增强

#define MaxSize 10

typedef struct {
	int data[MaxSize];
	int length;
}Splist;

bool ListInsert(SqList &L, int i, int e){
	if(i<1 || i>L.length+1){
		return false;
	}
	if(L.lenth>MaxSize){
		return false;
	}
	for (int j = L.length; j < i; j--) {
        L.data[j] = L.data[j-1];
    }
    L.data[i-1] = e;
    L.length++;
    return L;
}

插入数据 的时间复杂度分析

  1. 最好情况:新元素直接插入到末尾 时间复杂度O(1)
  2. 最坏情况:新元素插入到了开头 时间复杂度O(n)
  3. 平均情况:新元素插入到任何一个位置的概率相同 时间复杂度O(n/2) = O(n)

2. 删除操作

ListDelete(SqList L, int i, int e)
太简单,直接上代码

int ListDelete(SqList L, int i) {
    int e = 0;
    e = L.data[i - 1];
    for (int j = i; j < L.length; ++j) {
        L.data[j - 1] = L.data[j];

    }
    L.length--;
    return e;
}

删除操作的时间复杂度

O(n)

3. 查找

3.1 按位查找

GetElem(L, i)
取得线性表L中第i个元素的值
L.data[i-1];
时间复杂度O(1)

3.2 按值查找

LocalElem(L, e)

int LocalElem(SpList L, int e){
	for(int i = ; ; i < L.ength; i++{
		if(L.data[i] == e){
			return i+1;
		}
	}
	return 0;
}

时间复杂度O(n)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jupyter Aaron

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值