2020-11-15数据结构与算法 (3) :单向链表,双向链表和单向循环链表的插入,遍历,删除和查询

本文深入探讨了链表这种基础数据结构,包括单向链表、双向链表和单向循环链表的定义、节点结构以及插入、遍历、删除和查询等操作。对比了链表与顺序表的优缺点,并给出了Python中实现链表操作的例子。
摘要由CSDN通过智能技术生成

链表

线性表:链表和顺序表的统称,一个线性表是某类元素的一个集合,还记录这元素之间的一种顺序关系。最基本的数据结构之一。

为什么要使用链表

链表可以充分利用计算机内存空间,实现灵活的内存动态管理。

链表的定义

链表是一种常见的基础数据结构,是一种线性表,但是不像顺序表一样连续存储数据,而是在每一个节点(数据存储单元)里存放下一个节点的位置信息(即地址)。

链表的节点

一个节点由两部分组成,数据区和链接区。第一部分保存数据信息,第二部分保存下一个节点的数据信息地址。

在这里插入图片描述

单向链表

定义:

单链表是链表中最简单的一种形式,它的节点包含两个域,一个信息域和一个链接域。这个链接指向链表中的下一个节点。而最后一个节点的链接域则指向一个空值。

  • 表元素域用来存放具体数据

  • 链接域用来存放下一个节点的位置

  • 变量p指向链表的头节点的位置,从p出发能找到表中的任意节点。

在这里插入图片描述

Python中变量标识的本质

python中的变量名不保存值,保存值的地址。

在这里插入图片描述

变量等于谁即相当于该变量指向那个节点

单链表在python中的操作使用

链表与节点类的连接

在这里插入图片描述

统计一个链表的长度:游标指针

在这里插入图片描述
在这里插入图片描述

class Node(object):
    def __init__(self,item):
        self.item=item
        self.next=None

#node=Node()

class SingleLinkList(object):
    #单链表
    def __init__(self,node=None):
        #定义第一个指向的节点位置,头节点位置的属性为对象属性
        self.__head=node

    def is_empty(self):
        #链表是否为空
        return self.__head == None

    def length(self):
        #返回链表的长度
        # 遍历整个链表
        # cur游标用来移动遍历节点
        cur = self.__head
        # count记录数量
        count = 0
        while cur != None:
            count += 1
            cur = cur.next
        return count

    def travel(self):
        cur=self.__head
        while cur != None:
            print(cur.item,end=" ")
            cur=cur.next
        print("\n")

    def add(self,item):
        #链表头部添加元素,头插法,先将新节点的next与原链表头部的数据地址连接,再将
        #head与新节点
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值