前言:本笔记仅仅只是对内容的整理和自行消化,并不是完整内容,如有侵权,联系立删。
一、链表
在之前的学习中,我们接触到了字符串和数组(列表)这两种结构,它们具有着以下的共同点:1、元素按照一定的顺序来排列。2、可以通过索引来访问数组中的元素和字符串中的字符。由此,它们的一些共同缺点就比较明显:1、大小一般是固定的,尽管 Python 中数组列表可以扩容,但大部分语言,如C语言中数组大小是确定的。2、内存是连续的。3、所有元素要求具有相同的数据类型。而链表就是为了解决这些问题而产生的一种数据结构。
与数组不同,链表的元素存储可以是连续的,也可以是不连续的,每个数据元素处理存储本身的信息之外,还存储一个指示着下一个元素的地址的信息,给人的感受就好像这些元素是通过一条“链”串起来的。
二、面向对象编程:类
由于在 Python 中,我们使用的链表是类,因此之后在其他系列文章中,我也会再次写到关于链表的内容处理。这里我们先来看一下在 Python 中,我们需要用到的面向对象编程:类的使用。
首先,什么是面向对象呢?这里的“对象”实际上是对现实世界中所存在的事物的一种抽象,举个例子,你在计算机世界中怎么表示“人”这个概念呢?
人拥有着一些静态的特征,比如身高、体重、性别等,也拥有一些动态的行为,比如吃法,睡觉等,而在计算机世界中,我们将之抽象为一个类 Person , 并具有与之对应的“属性”和“方法”。
“属性”表示类所具有的特征,比如姓名、年龄、性别,通过这些特征,我们可以描述一个“人”的基本状态。
“方法”表示类的行为和功能,比如吃饭、睡觉、行走,通过这些动作,我们可以描述一个“人”的动态行为。
这样在计算机世界,一个“人”的概念就建立起来了,但这里的 Person 类只是个“模具”,空有概念,而无法表示具体的某一个人,只有创造一个类的实例(也就是我们说的对象),比如"张三,18, 男", "李明、20,男",才能真正的使用。