PYTHON基础篇6

目录

每日文案

一、链表

​编辑

 二、链表类型

单链表

双链表

循环链表 

 链表的存储方式

三、类和对象的概念

四、链表操作

节点的定义

 链表的定义

链表的插入

完整代码 

总结


每日文案

要有最朴素的生活和最遥远的梦想,即使明日天寒地冻,路远马亡


一、链表

        链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)。

链表的入口节点叫做头节点也就是head

如图所示:

 二、链表类型

  • 单链表

        就是通过指针线性的指向下去,连接起来

  • 双链表

        双链表:每一个节点有两个指针域,一个指向前一个节点,一个指向下一个节点 

        双链表既可以向前查询也可以向后查询    

  • 循环链表 

  •  链表的存储方式

        数组在内存中是连续存在的,但链表在内存中不是连续分布的,链表是通过指针域的指针链接在内存中各个节点。


三、类和对象的概念

        类就像是一种概念,而对象就是这个概念的实例化,举个例子比如动物,它就具有一些"属性"和"方法" 比如体重,身高,性别之类的就是动物的属性,而睡觉,吃饭这些动作就是动物的方法

在代码中表示类使用class关键字,在类中定义的变量会成为该类的属性,而定义的函数就会成为该类的方法

class Animal:
    # 比如我们定义一个name 就会成为所有实例的公共属性
    name = "Tom"
    
    #定义一个函数就会成为该类的方法
    def hello(self):
        print("hello")

#在使用类之前要先创建一个实例
animal1 = Animal()
animal2 = Animal()

#实例化之后可以调用属性
animal1.name="Jerry"
animal2.name="Mike"

#实例可以调用方法
animal1.hello()
animal2.hello()

        在Python中,当你定义一个类的方法时,你会注意到通常有一个名为self的参数。这个参数并不是你手动添加的,而是在方法被调用时,Python会自动传递的。self代表的是类的一个实例,也就是你通过类创建的对象。这样,你就可以在方法内部访问和操作这个对象的属性和其他方法。简而言之,self就像是对象的别名,让你能够在方法内部引用到调用它的对象。 

        刚刚的类我是直接把name的值直接固定了,但后面我们的实例就name的值都是一样了 但在不同的对象实例应该是不同的 所以我们需要一个方法__init__ 用来初始化属性

class animal:
    #这里我们定义一个__init__方法,name是实例传递的参数
    def __init__(self,name):
        #self表示实例本身,也就是实例.name=传递的name值
        self.name = name

 __init__方法在创建实例的时候会立刻执行用来给新创建的对象初始化属性,调用类创建对象的时候,类后面的所有参数都会传递到__init__方法中

animal1= Animal("Jerry")
#"Jerry"这个值会传到__init__方法中,通过self.name=name,来初始化animal1的属性

 所以我们定义一个类的基本格式就是

class 类名
    #一个公共属性
    
    #init初始化方法
    def __init__(self,其他参数):
    
    #其他方法
    def method(self,其他参数):
    
    

四、链表操作

  • 节点的定义

        节点就是由一个数据域和一个指针域构成那么就可以说一个数据属性和一个指针属性,那么初始化一个新的节点,他的next一般都是不存在的,就是一个空值,None可以用来初始化或者重置对象的属性,用来表明属性当前的为空或者说没有设置,新设置的节点next都是None(新创建的节点一般都说都是最后一个所以指针域都是指向空)

#创建一个链表的节点类
class Node:
    # init方法,初始化
    def __init__(self,data)
        self.data=data #数据域存储节点数据
        self.next=None #指针域next初始化为None
  •  链表的定义

        一个链表是由多个节点连接起来的,所以我们还需要一个链表类来容纳链表的节点,链表类一般包括链表的头节点和链表的的节点长度这两个属性,那么类的定义就是

#定义链表类
class LinkList:
    def __init__(self):
        #第一个链表的头节点先初始化为None
        self.head_Node = None
        #链表长度属性,先初始化为0
        self.length=0
  • 链表的插入

    定义完了链表的节点和链表之后我们需要把节点给穿起来,这个时候就需要一个新的方法来进行插入操作,接收传入的数据,构成一个新的节点,插到链表的尾巴

  • 每加入一个节点,所以链表长度+1 也就是self.length+1
class LinkList:
    def __init__(self)
        self.HeadNode=data
        self.length=0

    def insert(self,data)
        self.length+=1
  • 还需要创建一个新的节点,并且把它初始化为data
new_Node=Node(data)
  • 如果说当前的链表是空链表的话,那么加进来的第一个链表节点就是头节点

        当我们要向链表中添加一个新节点,并且这个链表可能是空的,我们需要考虑两种不同的场景。如果链表是空的,这可以通过检查头节点是否为`None`或者链表的长度是否为零来判断。在这种情况下,我们直接将新创建的节点设为链表的头节点,并且将这个新节点作为结果返回。

if self.Head_node is None:
    self.head_node = new_Node #将新进来的节点作为头节点
    return self.head_node    #直接返回不执行后面的代码

        如果链表中已经包含了元素,我们的目标是将新节点添加到链表的末尾。为了实现这一点,我们需要定位到链表的最后一个元素。我们如何确定已经到达链表的末端呢?

        这个过程遵循一个标准的模式:我们从链表的头节点出发,顺序访问每个节点,一直前进直到遇到一个节点,其后继节点(即next属性)是None。这个节点就是我们要找的链表的最后一个节点。一旦找到这个节点,我们就将其next属性设置为指向新创建的节点,从而将新节点添加到链表的尾部。

current_Node = self.head_node #currentNode先指向头节点
#然后我们需要不断去往后移动currentNode 直到next为None的时候停止,也就是最后一个节点
    while current_Node.next is not None:
        current_node = current_node.next #current_node不断移动到下一个节点

         当current_node.next为空的时候说明已经到了最后一个节点,之后需要将新创建的节点插到链表的尾部直接让next指向新插入的节点就好了

current_node.next = new_node #尾节点的next直接指向新的节点
return new_node #返回新的节点
  • 完整代码 

class LinkList:
    def __init__(self):
        self.head_node = None
        self.length = 0
        # 该方法名称为insert,接收data作为参数
    def insert(self, data):
        self.length += 1 # 链表长度 加 1
        new_node = Node(data) # 创建一个新的链表节点,初始化值为 data
        if self.head_node is None: # 如果当前链表为空链表
            self.head_node = new_node #  新创建的链表节点为头节点
            return self.head_node
        current_node = self.head_node # 如果当前链表不是空链表, currentNode 指针初始指向 头节点
        while current_node.next is not None:
              # 不断移动 currentNode,直到 next 指针为空时停止,说明已经走到最后一个节点
            current_node = current_node.next
        current_node.next = new_node # 将新创建的节点插入到链表的尾部
        return new_node # 返回插入的节点

如果想要打印链表节点,操作步骤和遍历链表直到找到最后一个节点的过程相似 

# 打印链表
def print_link_list(self):
    current_node = self.head_node #  currentNode 指针初始指向 头节点
    while current_node is not None:
        print(current_node.data, end=" ") # 输出链表数据
        current_node = current_node.next # 移动 currentNode
    print()

总结

本次对python中的对像,类还有链表进行讲解

  • 22
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python基础.doc》是一份讲解Python编程基础的文档。Python是一种简洁、易学、高效的编程语言,因此它成为了很多人入门编程的首选语言。 这份文档应该包含了Python的基本语法、变量、数据类型、运算符、流程控制、循环语句等内容。首先,它会详细介绍Python的注释规则,以及如何定义和使用变量。变量是存储数据的容器,它可以用于存储不同类型的数据,包括整数、浮点数、字符串等。接下来,文档应该解释各种常见的运算符,如算术运算符、比较运算符和逻辑运算符,以及它们的优先级和使用方法。 然后,文档应该涵盖Python中的条件语句和循环语句。条件语句如if语句和else语句,用于根据条件执行不同的代码块。循环语句如for循环和while循环,用于重复执行某些代码段。在解释这些语句时,应该给出一些实际的例子来帮助读者更好地理解。 此外,文档还应该介绍一些常用的内置函数和字符串操作方法。内置函数是Python提供的一些预先编写好的函数,可以直接使用,如print()和len()等。字符串操作方法主要是对字符串进行切片、连接、替换以及查找等操作。 最后,文档中还应该提供一些练习题或者编程示例,让读者能够通过实践来巩固所学的知识。 总之,《Python基础.doc》是一份详细讲解Python编程基础的文档,内容应该涵盖Python的基本语法、变量、数据类型、运算符、流程控制、循环语句等,并配有实例和练习题,以帮助读者更好地理解和掌握Python编程知识。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值