二,顺序表
1,顺序表的形式。(先忘掉python的列表这些数据结构)
内存:以一个字节为索引单位;类型本质:int,char;连续存储:顺序存储

--------

接下来是两种基本顺序表概念图:左是一体顺序表(多为存储的元素数据类型一致),右是元素外置的顺序表,上图所示是32位机器,li变量直接指向第一个,也是第一个元素为什么是li[0],因为偏移量为0(注:计算机按字节寻址)逻辑位置即下标如li[1]

2,顺序表结构如何,又如何实现呢(在python中已经对这一部分进行了封装):



一体式和分离式结构使用方面新的前者全部要新申请;后者表头不变,只是链接指向数据地址的变了。引出下面的概念(分离式结构又称动态顺序表)

3,顺序表的操作:
增加:

4,python中的顺序表:

即list使用了元素外置顺序表形式的分离式结构。(为什么分配八个元素存储区:元素外置,顺序表中存的是位置的数值,都是一定大小的,这就使存储不同类型元素出现了)
三,链表
1,引入概念

2,单向链表:

增删改查:

对于指向下一个节点的指针在c中可以用*这个数据结构表示,那在pyhton中怎么弄?

先来看图,在python中,a=10代表a占一小块地方,10占一小块地方,a占的地方里面存10的地址。所以,最后一句就相当于a,b=20,10,a指向20,b指向10。这就是为什么python不需要int a=10,c中这个相当于一小块内存,数值为10别名为a,也就是变量a。在py中一切皆对象
所以,定义一个类,类node中连最基本两个成员函数为elem,next,代码实现:



这也是为什么现在顺序表的使用多于链表的原因
3,双向链表:


代码不给看嘿嘿,诸看官可以尝试自己实现
数据存储方式讲完了。下面就是数据结构的第二部分即如何使用
四 栈和队列
1,栈:利用线性表的任意一种都可以实现

使用顺序表实现:

2,队列


hhhhhhhh,代码再给一次:

好啦,数据结构大部分介绍完成,下面就会聊聊一些常用的排序搜索算法嗯哼哼
看我这么辛苦小心心不给一个吗?企图卖萌中@~@
网友评论