python 链表操作 优化_python---单链表的常用操作
class Node(object):
"""结点"""
def __init__(self, data):
self.data = data
self.next = None
class SingleLinkList(object):
"""单链表"""
def __init__(self, node=None):
# 头结点设置为私有变量
self.__head = node
def is_empty(self):
"""链表是否为空"""
return self.__head is None
def length(self):
"""链表长度"""
cur = self.__head
count = 0
while cur is not None:
cur = cur.next
count += 1
return count
def travel(self):
"""遍历整个链表"""
cur = self.__head
while cur is not None:
print(cur.data, end="")
cur = cur.next
print()
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:
cur = self.__head
while cur.next is not None:
cur = cur.next
cur.next = node
def insert(self, pos, item):
"""指定位置添加结点"""
# 指定位置pos在第一个元素之前,执行头插法
if pos <= 0:
self.add(item)
# 指定位置超过链表尾部, 执行尾插法
elif pos > self.length() - 1:
self.append(item)
else:
# 指定位置的前一个结点
pre = self.__head
node = Node(item)
count = 0
while count < (pos - 1):
pre = pre.next
count += 1
node.next = pre.next
pre.next = node
def remove(self, item):
"""删除结点"""
cur = self.__head
pre = None
while cur is not None:
# 找到了要删除的结点
if cur.data == item:
# 要删除的结点是头结点
if cur == self.__head:
# 将头节点指向头结点的后一个结点
self.__head = cur.next
# 要删除的结点不是头结点
else:
pre.next = cur.next
return
else:
pre = cur
cur = cur.next
def search(self, item):
"""查找结点是否存在"""
cur = self.__head
while cur is not None:
if cur.data == item:
return True
cur = cur.next
return False
if __name__ == '__main__':
sll = SingleLinkList()
print(sll.is_empty())
print(sll.length())
sll.append(1)
sll.append(2)
sll.append(3)
sll.append(4)
sll.append(5)
sll.travel() # 12345
print(sll.length()) # 5
sll.add(99) # 99 12345
sll.travel()
print(sll.length()) # 6
print(sll.search(6)) # False
print(sll.search(4)) # True
sll.remove(3)
sll.travel() # 99 1245
python 链表操作 优化_python---单链表的常用操作相关推荐
- python中链表是什么_python 单链表的实现
常见的数据结构有链表,队列,栈,二叉树,哈希表,图等.其中最简单的是单链表. 单链表实质是在内存上存在的一些不连续的数据,不同数据之间通过节点存储的位置信息来连接.对比数组,他们是在内存上连续存在的一 ...
- python excel提取 替换_python代替excel的常用操作
numpy常用函数 %matplotlib notebook import matplotlib.pyplot as plt import numpy as np x1=np.arange(100)# ...
- Python如何创建一个单链表,以及实现单链表的增,删,改,查操作,以及对单链表的排序功能
标题Python如何创建一个单链表,以及实现单链表的增,删,改,查操作,以及对单链表的排序功能 #功能: 实现单链表的构建和功能操作 #定义单链表的类 class Node:""& ...
- python实现带头结点的单链表的就地逆置_设头指针为head,编写算法实现带头结点单链表head的就地逆置...
链表问题大全!!!刚出炉的还热乎呢!! #include #include typedef struct node { int nDate; struct node *pstnext; }Node; ...
- c语言pop逆置单链表,C语言实现单链表
实现单链表的以下操作: list.h: #ifndef __LIST_H__ #define __LIST_H__ #include #include #include typedef int Dat ...
- 链表的特点,单链表的定义、存储结构,单链表的基本操作(判断链表是否为空、销毁链表、清空链表、求链表表长、查找、插入、删除,建立单链表)
目录 一.链表(链式存储结构)的特点 二.单链表的定义和表示 1.带头结点的单链表 2.单链表的存储结构 三.单链表基本操作的实现 1.单链表的初始化(带头结点的单链表) 2.补充单链表的几个常用简单 ...
- 链表详解(单链表、双向链表、链表逆序)
目录 线性表 顺序存储结构 链式存储结构 单链表 单链表定义 单链表基本操作(仅供参考) 实例 循环单链表的状态图 双向链表 双向链表定义 双向链表特点 双向链表基本操作(仅供参考) 实例 双向链表的 ...
- 03-java数据结构之链表的学习(单链表、双链表等)
文章目录 1.链表 1.1 链表的介绍 2.单链表 2.1.单链表的显示 2.2.单链表的添加操作 2.2.1.直接添加到链表的尾部 2.2.2.根据no插入到指定位置 2.3.单链表节点的修改 2. ...
- 判断一个链表是否为循环单链表
判断一个链表是否为循环单链表: #设置两个指针(fast, slow),slow步长为1,fast步长为2, 大概的思路如下: 如果链表为循环单链表,则fast与slow必定相遇. 如果链表不为循环单 ...
- 删除链表的中间节点 Java实现_【链表问题】删除单链表的中间节点
前言 以专题的形式更新刷题贴,欢迎跟我一起学习刷题,相信我,你的坚持,绝对会有意想不到的收获.每道题会提供简单的解答,如果你有更优雅的做法,欢迎提供指点,谢谢. [题目描述] 给定链表的头节点head ...
最新文章
- String的那一大堆事儿--1
- 遍历所有点的最短路径python_所有节点最短路径
- java 四则运算 栈的实现
- SAP Spartacus PageMetaService 的单元测试
- 王道考研 计算机网络10 物理层设备 中继器 集线器
- 手机上python编程工具3和3h有区别吗_Python3.5内置模块之time与datetime模块用法实例分析...
- python删除列表中的元素
- cacti监控 磁盘I/O
- GO语言学习之路17
- Java程序开发工具 JCreator
- ab 测试工具(Linux Windows)
- vbs格式编程教程基础
- 数学——每日一题7 1.14 利用定积分的定义求极限
- Mac 使用 Aria2 下载百度网盘资源
- Openwrt 硬改过程记录
- 戴尔台式计算机usb驱动,dell服务器和电脑不支持usb2.0设备安装系统的解决方案方法...
- 终极自由之路:第二章 问题以及解决之道
- vue v-model 双向绑定表单元素的数据:实质是绑定了value、checked、selected属性
- 【C语言】初识指针(终篇)
- 【我的渲染技术进阶之旅】关于C++轻量级界面开发框架Dear ImGui介绍
热门文章
- oracle or索引失效,以下Oracle错误意味着什么:无效的列索引
- arcgis风向_[ArcGIS] 空间分析(六) 追踪分析(台风路径)
- 主板有电无法启动_电脑无法开机?这篇文章让你省下几百修理费
- java 静态方法 构造方法,Java构造函数和静态方法
- python3.9新特性_Python3.9又更新了:dict内置新功能
- java map 实例_java中map集合嵌套形式简单示例
- 一个简单计算器demo 拥有记忆和记忆清除功能
- linux删除具有指定内容的文件,Linux bash删除文件中含“指定内容”的行功能示例...
- java通过jdbc访问mysql,update数据返回值的思考
- console输出彩色字体