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

devtools/2024/9/23 20:12:37/

1、线性表

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

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

2、线性表的存储

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

1、链式存储

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

2、线性存储

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

3、单链表操作

下面是代码:

class Node(object):  # 节点def __init__(self, ele):self.ele = eleself.next = Noneclass SinkList(object):  # 创建单链表def __init__(self, node=None):self.__head = nodedef is__empty(self):  # 判断是否为空return self.__head is Nonedef length(self):  # 链表长度cu = self.__headcout = 0while cu is not None:cout += 1cu = cu.nextreturn coutdef travl(self):cu = self.__headwhile cu is not None:print(cu.ele, end=' ')cu = cu.nextprint("\n")def add(self, item):  # 在链表首部添加元素node = Node(item)node.next = self.__headself.__head = nodedef append(self, item):  # 在链表尾部添加元素node = Node(item)if self.is__empty():self.__head = nodeelse:cu = self.__headwhile cu.next is not None:cu = cu.nextcu.next = nodedef insert(self, index, item):  # 在指定位置添加元素if index < 0:self.add(item)elif index > self.length() - 1:self.append(item)else:per = self.__headcout = 0while cout < index - 1:cout += 1per = per.nextdef remove(self, item):  # 删除节点cur = self.__headpre = Nonewhile cur is not None:if cur.ele == item:if cur == self.__head:self.__head = cur.nextelse:pre.next = cur.nextbreakelse:pre = curcur = cur.nextdef search(self, item):  # 查找节点是否存在cur = self.__headwhile not cur:if cur.ele == item:return Trueelse:cur = cur.nextreturn Falseif __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.ppmy.cn/devtools/9643.html

相关文章

【论文笔记 | 异步联邦】 FedBuff

1. 论文信息 Federated Learning with Buffered Asynchronous Aggregation&#xff0c;International Conference on Artificial Intelligence and Statistics&#xff0c;2022&#xff0c;ccfc 2. introduction 2.1.1. 背景&#xff1a; 同步 FL &#xff0c;随训练过程中…

Android中混淆代码还原

一、使用GUI工具 工具位于/sdk/tools/proguard/bin/目录 1. terminal中目录切换到工具所在的目录 2.执行运行proguardgui.sh 3.打开ProGuard 4.在上面的 mapping file文件中选择你的 mapping.txt 文件&#xff0c;在下面输入框输入要还原的代码 5.然后点击右下角ReTrace!&quo…

实验 3--表的基本操作与数据查询

文章目录 实验 3--表的基本操作与数据查询4.3.1 实验目的4.3.2 实验准备实验内容1.在 SSMS 中向数据库 YGKQ 中的表插入数据。2.使用 T-SQL 语句向 YGKQ 中的表插入数据。3.在 SSMS 中删除数据库 YGKQ 中的表数据。4.使用 T-SQL 语句删除数据库 YGKQ中的表数据。5.在 SSMS 中修…

linux运行ant 报错 Unable to locate tools.jar【已解决】

linux安装 ant 运行时报错 Unable to locate tools.jar. Expected to find it in /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.402.b06-1.el7_9.x86_64/lib/tools.jar 原因 已安装的jdk只有运行环境&#xff0c;没有tool.jar&#xff0c;而ant运行需要java开发环境&#xff0c;因…

JS stacktrace 堆内存耗尽

javascript 堆内存耗尽 问题 是 npm run dev 的时候 报错 如下 <--- JS stacktrace --->FATAL ERROR: MarkCompactCollector: young object promotion failed Allocation failed - JavaScript heap out of memory在大多数情况下&#xff0c;默认情况下 Node.js 的堆内存…

AI讲师大模型培训老师叶梓:大模型应用的方向探讨

大模型应用的关键方向及其落地案例可以从多个角度进行探讨&#xff0c;结合最新的研究和实际应用案例&#xff0c;我们可以更全面地理解这些技术如何推动社会和经济的发展。 Agent&#xff08;数字代理&#xff09;: 方向说明:Agent方向的AI技术旨在创建能够独立执行任务、做出…

国际数字影像产业园为园区企业提供法务服务

国际数字影像产业园为园区企业提供优质的法务服务&#xff0c;成都树观法律咨询服务有限公司&#xff0c;隶属于树莓科技(成都集团有限公司体系。公司名“树观”寓意为“树高千丈&#xff0c;以法为根。息讼止争&#xff0c;粲然可观”&#xff0c;象征着公司对法律领域的深度理…

Java学习笔记26(枚举和注解)

1.枚举和注解 1.1 枚举 ​ 1.枚举(enumeration) ​ 2.枚举是一组常量的集合 ​ 3.枚举属于一种特殊的类&#xff0c;里面只包含一组有限的特定的对象 1.枚举应用案例 ​ 1.不需要提供setXxx方法&#xff0c;因为枚举对象值通常为只读 ​ 2.对枚举对象/属性使用final st…