数据结构基础入门第一天

数据结构

1,定义
由于不是专业性的文章,就用通俗的语言来讲解。
数据结构是指相互之间存在一定关系的数据元素的集合。就像数学中的函数,y=2x这里的x与y存在二倍的关系,而且x的取值是正无穷到负无穷,所以y也有自己的值域。但是数据结构中的集合都是有限的元素构成的。将x与y想成两个元素,这样就好理解了。
2,逻辑关系
元素之间的基本逻辑关系。一共有四中基本类型。
1,集合:结构中的元素只是属于一个集合,除此之外再无联系
2,线性结构:每个元素一对一联系。
3,树形结构:元素一对多联系。
4,网状结构:元素之间多对多联系。
数据结构的存储方式
1,顺序存储结构:用数据元素在存储器中的相对位置来表示数据元素之间的逻辑关系。
2,链式存储:每个元素中加一个另一元素的地址指针。
线性表的链式存储
链式存储,顾名思义就是每个元素都是两两链接,形成一条锁链。这条锁链可以是单向的,也可以是双向的。
单项链表:在每个元素的尾部加上下一个元素的指针,这样通过前一个元素就可以找到下一个元素。通常为了方便使用,会在第一个元素前面加上一个头指针。
双向链表:在每个元素的头部和尾部都加入指针,这样所有的元素都可以向前或者向后寻找下一个元素。
本来应该展示一下代码,但是这是基础文章而且老子也不会,所以就下次吧萨斯嘎。

由于硬盘的运行速度远低于cpu的运行速度,所以为了方便运行,就在cpu和硬盘之间加了内存这个“客栈”。
栈在计算机中有多重实现方式,硬堆栈可以利用cpu的某些寄存器来实现,速度快但是容量有限。软堆栈,主要在内存终实现,实现方法有静态和动态两种。好吧软堆栈其实就是堆。
栈的应用
由于栈有“后进先出”的特点,就像箱子里面都是鸡蛋饼,将上面的饼拿走才能拿下面的饼,所以程序设计中栈成为了常用工具。
应用:递归具体代码如下

#1-10的累加和==10+(1-9的累加和)
def s(n):
    if n==1:
        return 1
    else:
        r=n+s(n-1)
    return r
if __name__=="__main__":
    r=s(10)
    print(r)

上面例子中,当计算s(10)的时候就必须先算出s(9),想计算s(9)的时候就必须先算出s(8)。s(9),s(8)都是后存储的数,但是要先计算。这就是栈的特点,但是要注意不能在栈里放太多的数据,否则会溢出。
深copy与浅copy
赋值号与copy的区别
就像下面这张华丽的照片,当b=a时,b是将a所代表的地址上的数值复制了一遍,再在新的地址中将12写入,所以当a的值改变的时候b的地址里的值压根不在乎。
在这里插入图片描述
浅copy
如下图,浅copy可以将列表中的元素都复制一遍,将他们写入新的地址当中,当列表a改变时b不会改变。在这里插入图片描述
但是当列表中还有一个列表的时候,浅copy就怂了。他只能copy大列表中的元素和地址,当小列表中的列表改变的时候,b也会改变如下图。在这里插入图片描述
深copy就很牛逼了,他会将a的大列表拷出来放到一个新地址里面,也会将小列表copy出来放到一个新地址里面,所以a的小列表变化的时候b不会改变。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值