我是靠谱客的博主 激情大碗,最近开发中收集的这篇文章主要介绍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)

最后

以上就是激情大碗为你收集整理的2.2.2 线性表的基本操作 插入、删除、查找 (王道考研)线性表的基本操作 插入、删除、查找的全部内容,希望文章能够帮你解决2.2.2 线性表的基本操作 插入、删除、查找 (王道考研)线性表的基本操作 插入、删除、查找所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部