数据结构学习笔记——机械研究生Day_2

之前学习过c语言,跟着浙大翁恺老师学习,强力推荐!!

昨天学习了绪论部分,主要包括数据结构基本概念、算法和评价指标、宏观把控数据结构到底要学啥等

今天开始线性表的学习,为什么是表?因为list翻译的,实际上就是list,用英文理解会很好

线性表的基本操作增删改查,以及建立在其基础上的一些辅助操作

1.顺序表的定义实现,静态分配和动态分配

实际上,线性表就是如何高效分配内存这个逻辑展开的,要用到的函数是malloc方法,c语言里说的很清楚了。

定义后,要初始化(why?因为哪一个内存地址之前可能存储的别的数据,”脏数据“,要先初始化),可以动态分配内存

2.顺序表的插入删除

假设用python实现顺序表的插入等:

def insert_into_list(seq_list, index, value):
    seq_list.append(None)  # 先在列表末尾增加一个空位,保证有足够的空间#后续是i-1位置的值##移动到i位置
    n = len(seq_list)
    for i in range(n-1, index, -1):#n-1是长度,index是插入索引,-1表示递减
        seq_list[i] = seq_list[i-1]  # 将元素逐个向后移动
    seq_list[index] = value  # 将新元素插入到指定位置

# 示例用法
my_list = [1, 2, 3, 4, 5]
insert_into_list(my_list, 2, 100)  # 在索引2处插入值100
print(my_list)  # 输出 [1, 2, 100, 3, 4, 5]


在末尾插入可以直接适用append()方法:

my_list = [1, 2, 3, 4, 5]
my_list.append(6)  # 在末尾添加元素6
print(my_list)  # 输出 [1, 2, 3, 4, 5, 6]
那么在实际上,为了保证代码的健壮性:

3.分析插入操作的时间复杂度:(关注循环)

只看最坏、平均情况,不看循环0次等:O(n)(因为要循环n次)

4.删除操作,实际上和插入类似

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值