python数据结构与算法之线性表

news2024/9/22 7:40:40

1、线性表

是一种由n个元素(n>= 0 )数据元素组成的有限序列,所包含的元素数量通常被称为表的长度

n = 0 的表被称为空表,线性表的数据元素可以单一也可以复杂,可以是整数,字符串,也可以是由几种数据来做。

2、线性表的存储

有两种方式分别是顺序存储和链式存储

1、链式存储

链式存储通过一组含有指针的存储单元来存储线性表的数据和他们的逻辑顺序(采用这种方式存储的通常被称为单链表)

2、线性存储

按照逻辑顺序来进行存放在地址连续的存储单元中使得逻辑上相邻的元素在物理位置上相邻(在python中的list和tuple都可以实现顺序表)

3、单链表操作

下面是代码:

class Node(object):  # 节点
    def __init__(self, ele):
        self.ele = ele
        self.next = None


class SinkList(object):  # 创建单链表
    def __init__(self, node=None):
        self.__head = node

    def is__empty(self):  # 判断是否为空
        return self.__head is None

    def length(self):  # 链表长度
        cu = self.__head
        cout = 0
        while cu is not None:
            cout += 1
            cu = cu.next
        return cout

    def travl(self):
        cu = self.__head
        while cu is not None:
            print(cu.ele, end=' ')
            cu = cu.next
        print("\n")

    def add(self, item):  # 在链表首部添加元素
        node = Node(item)
        node.next = self.__head
        self.__head = node

    def append(self, item):  # 在链表尾部添加元素
        node = Node(item)
        if self.is__empty():
            self.__head = node
        else:
            cu = self.__head
            while cu.next is not None:
                cu = cu.next
            cu.next = node

    def insert(self, index, item):  # 在指定位置添加元素
        if index < 0:
            self.add(item)
        elif index > self.length() - 1:
            self.append(item)
        else:
            per = self.__head
            cout = 0
            while cout < index - 1:
                cout += 1
                per = per.next

    def remove(self, item):  # 删除节点
        cur = self.__head
        pre = None
        while cur is not None:
            if cur.ele == item:
                if cur == self.__head:
                    self.__head = cur.next
                else:
                    pre.next = cur.next
                    break
            else:
                pre = cur
                cur = cur.next

    def search(self, item):  # 查找节点是否存在
        cur = self.__head
        while not cur:
            if cur.ele == item:
                return True
            else:
                cur = cur.next
        return False


if __name__ == "__main__":
    si = SinkList()
    print(si.is__empty())
    print(si.length())
    si.append(3)
    si.add(999)
    si.insert(-3, 110)
    si.insert(99, 111)
    print(si.is__empty)
    print(si.length())
    si.travl()
    si.remove(111)
    si.travl()

结果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1596833.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

活动预告|NineData 创始人CEO叶正盛将参加QCon全球软件开发大会,共话AI大模型技术在数据库DevOps的实践

4月13日下午&#xff0c;NineData创始人&CEO叶正盛即将参加InfoQ中国主办的『QCon全球软件开发大会北京站』的技术大会。在本次技术峰会上&#xff0c;叶正盛将以《AI大模型技术在数据库DevOps的实践》为主题&#xff0c;深入剖析AI大模型技术在数据库DevOps领域的最新进展…

Zookeeper的集群搭建和ZAB协议详解

Zookeeper的集群搭建 1&#xff09;zk集群中的角色 Zookeeper集群中的节点有三个角色&#xff1a; Leader&#xff1a;处理集群的所有事务请求&#xff0c;集群中只有一个LeaderFollwoer&#xff1a;只能处理读请求&#xff0c;参与Leader选举Observer&#xff1a;只能处理读…

软考数据库---3.关系数据库

3.1 名词 属性分类 数据库实体属性分类主要包括以下几个方面&#xff1a; 标识属性 (Key Attribute / Identifier): 这些属性是用来唯一识别实体实例的关键属性&#xff0c;也称为主键&#xff08;Primary Key&#xff09;。在数据库表中&#xff0c;每个实体的实例&#xff0…

【GD32】GP2Y1014AU粉尘传感器

2.42 GP2Y1014AU粉尘传感器 2.42.1 模块来源 采购链接&#xff1a; GP2Y1014AU粉尘传感器模块 PM2.5灰尘传感器代替GP2Y1010AU0F 2.42.2 规格参数 工作电压&#xff1a;5-7V 消耗电流&#xff1a;最大20mA 最小粒子检出值&#xff1a;0.8微米 灵敏度&#xff1a;0.5V(0.1mg…

锁策略总结

锁策略 悲观锁和乐观锁 乐观锁和悲观锁不是具体类型的锁而是指两种不同的对待加锁的态度&#xff0c;这两个锁面对锁冲突的态度是相反的。 乐观锁&#xff1a;认为不存在很多的并发操作&#xff0c;因此不需要加锁。悲观锁&#xff1a;认为存在很多并发操作&#xff0c;因此需…

c++编程(4)——类与对象(2)构造函数、析构函数

欢迎来到博主的专栏——c编程 博主ID&#xff1a;代码小豪 文章目录 构造函数默认构造函数析构函数默认析构函数 构造函数 以一个日期类为例。 class Data { private:int _year;int _month;int _day; };这个类实例化出来的对象内的值都是编译器默认初始化的随机值。 Data d1…

私域流量变现干货:轻松盘活,高效增长!

你知道如何增长私域流量并将这些流量转化为实际收益&#xff0c;让我们的品牌价值最大化吗&#xff1f; 今天&#xff0c;就分享几点干货&#xff0c;帮助大家盘活私域流量&#xff0c;实现高效增长&#xff01; 1、精准定位和用户画像 首先&#xff0c;了解您的私域流量源于…

位像素谈海外仓库存管理方法:WMS对效率提升到底有没有用?

对海外仓来说&#xff0c;最重要的事情就是把库存管理做清楚。因为海外仓的本质还是仓储&#xff0c;如果连仓储数据都出现错误&#xff0c;那不管是对客户还是对终端消费者来说&#xff0c;都会造成巨大的影响。 今天我们就来聊一下&#xff0c;在电商飞速发展的今天&#xf…

面试官:说一说CyclicBarrier的妙用!我:这个没用过...

写在开头 面试官&#xff1a;同学&#xff0c;AQS的原理知道吗&#xff1f; 我&#xff1a;学过一点&#xff0c;抽象队列同步器&#xff0c;Java中很多同步工具都是基于它的… 面试官&#xff1a;好的&#xff0c;那其中CyclicBarrier学过吗&#xff1f;讲一讲它的妙用吧 我&…

Sonar下启动发生错误,elasticsearch启动错误

Download | SonarQube | Sonar (sonarsource.com) 1.首先我的sonar版本为 10.4.1 &#xff0c;java版本为17 2.sonar启动需要数据库,我先安装了mysql, 但是目前sonar从7.9开始不支持mysql&#xff0c;且java版本要最少11,推荐使用java17 3.安装postsql,创建sonar数据库 4.启…

什么是5G单兵?5G单兵跟5G执法记录仪有什么异同?

深入了解5G单兵系统&#xff1a;未来执法新革命与执法记录仪的差异分析 随着技术的不断进步和发展&#xff0c;5G技术的应用已经渗透到社会的各个领域中&#xff0c;包括公安、消防等执法与紧急救援领域。其中&#xff0c;5G单兵系统作为一种新型的智能化执法装备&#xff0c;…

树形侧边栏(展开、全选、切换名称)

父文件&#xff1a; index.vue <template><div class"h-full p20px bg-#f5f5f5"><ContentWrap class"w-260px h-[calc(100vh-200px)] min-h-700px"><TenantTree select"tentantSelect" /></ContentWrap></div&…

【计算机考研】跨考计算机,需要准备多久才来得及?

9个月跨考计算机&#xff0c;如果选择是408的话&#xff0c;时间稍微有点紧张&#xff0c;前期感觉不大&#xff0c;后期数学408堆在一起会感觉很难受... 很多确定考408的同学都是一开始先从数据结构开始复习的&#xff0c;这样到了中后期觉得自己时间不够了再去转自命题也来得…

MySQL——基础

SQL 全称 Structured Query Language&#xff0c;结构化查询语言。操作关系型数据库的编程语言&#xff0c;定义了一套操作关系型数据库统一标准 。 SQL 通用语法 SQL语句可以单行或多行书写&#xff0c;以分号结尾。SQL语句可以使用空格/缩进来增强语句的可读性。MySQL数据库…

【C++】unordered_map unordered_set 底层刨析

文章目录 1. 哈希表的改造2. unordered_map3. unordered_set C STL 库中&#xff0c;unordered_map 和 unordered_set 容器的底层为哈希表&#xff0c;本文将简单模拟哈希表&#xff08;哈希桶&#xff09;&#xff0c;unordered_map 和 unordered_set 只需封装哈希表的接口即可…

分布式的计算框架之Spark(python第三方库视角学习PySpark)

基本介绍 Apache Spark是专为大规模数据处理而设计的快速通用的计算引擎 。现在形成一个高速发展应用广泛的生态系统。 特点介绍 Spark 主要有三个特点&#xff1a; 首先&#xff0c;高级 API 剥离了对集群本身的关注&#xff0c;Spark 应用开发者可以专注于应用所要做的计…

C语言面试题之奇偶链表

奇偶链表 实例要求 1、给定单链表的头节点 head &#xff0c;将所有索引为奇数的节点和索引为偶数的节点分别组合在一起&#xff0c;然后返回重新排序的列表&#xff1b;2、第一个节点的索引被认为是 奇数 &#xff0c; 第二个节点的索引为 偶数 &#xff0c;以此类推&#x…

快速掌握Spring监控(Spring Boot admin)

监控 监控可视化监控平台Admin底层逻辑info 自定义端点 监控 监控的作用&#xff1a; 监控服务状态是否宕机监控服务运行指标&#xff08;内存&#xff0c;虚拟机&#xff0c;线程&#xff0c;请求等&#xff09;监控日志管理服务&#xff08;服务下线&#xff09; 监控的实…

详解IP证书申请

申请IP证书&#xff0c;也被称为IP SSL证书&#xff0c;是一种特殊的SSL证书&#xff0c;它不同于传统的域名验证&#xff08;DV&#xff09;证书&#xff0c;是通过验证公网IP地址而不是域名来确保安全连接。这种证书用于保护IP地址&#xff0c;并在安装后起到加密作用。以下是…

李廉洋:4.16黄金,原油最新资讯,亚盘面走势分析及策略。

周一&#xff0c;10年期美国国债收益率攀升3个基点&#xff0c;至4.55%&#xff0c;原因是投资者在权衡中东紧张局势加剧演变为全面地区战争的风险。美国国债将成为市场关注的焦点&#xff0c;上周美国国债收益率上升12个基点&#xff0c;至去年11月以来的最高水平&#xff0c;…