class Node:  # 创建但个结点的对象def __init__(self, val):self.data = valself.next = Nonedef init_list(head_ptr):  # 初始化链表操作head_ptr.next = Noneptr = head_ptrinit_data = [82, 76, 83, 53, 74]for data in init_data:new_node = Node(data)new_node.next = Noneptr.next = new_nodeptr = ptr.nextdef add_node(head_ptr, value):  # 在尾部添加一条数据while True:head_ptr = head_ptr.nextif not head_ptr.next:head_ptr.next = Node(value)breakdef Insert_data_index(head_ptr, index, value):  # 在指定位置插入值 移动数据 n-i+1 平均(n+1)/2i = 0new_node = Node(value)ptr = head_ptrif index == 0:new_node.next = head_ptr.nexthead_ptr.next = new_nodeelse:while True:ptr = ptr.nextif (index - 1) == i:new_node.next = ptr.nextptr.next = new_nodebreakif not ptr.next:breaki += 1if index > i:ptr.next = new_nodedef Insert_data_value(head_ptr, loc_value, value):  # 根据值插入 移动数据 n-i+1 平均(n+1)/2new_node = Node(value)flag = Falseptr = head_ptrif loc_value == head_ptr.next.data:new_node.next = head_ptr.nexthead_ptr.next = new_nodeelse:while True:if ptr.next.data == loc_value:new_node.next = ptr.nextptr.next = new_nodeflag = Falsebreakelse:flag = Trueptr = ptr.nextif not ptr.next:breakif flag:ptr.next = new_nodedef Del_Node_Index(head_ptr, index):  # 通过索引地址删除数据 需要移动最好0个最多 n-i 平均(n-1)/2flag = Falsei = 0ptr = head_ptrif index == 0:head_ptr.next = head_ptr.next.nextflag = Trueelse:while True:ptr = ptr.nextif not ptr.next:breakif (index - 1) == i:ptr.next = ptr.next.nextflag = Truebreaki += 1return flagdef Del_Node_Value(head_ptr, value):  # 通过索引地址删除数据 需要移动最好0个最多 n-i 平均(n-1)/2flag = Falseptr = head_ptr.nextif head_ptr.next.data == value:head_ptr.next = head_ptr.next.nextflag = Trueelse:while ptr:if ptr.next.data == value:ptr.next = ptr.next.nextflag = Truebreakptr = ptr.nextreturn flagdef Query_data_index(head_ptr, index):flag = Falsei = 0ptr = head_ptr.nextwhile ptr:if i == index:flag = Truereturn ptr.dataptr = ptr.nexti += 1if not flag:return flag == -1def Query_data_value(head_ptr, value):flag = Falsei = 0ptr = head_ptr.nextwhile ptr:if ptr.data == value:flag = Truereturn iptr = ptr.nexti += 1if not flag:return flag == -1def Print_all(ptr):  # 输出所有数据while True:ptr = ptr.nextif not ptr:breakprint(ptr.data, end="\t")if __name__ == '__main__':head = Node(None)  # 初始化头结点init_list(head)  # 初始化链表add_node(head_ptr=head, value=999)add_node(head_ptr=head, value=99)Insert_data_index(head, 9, 8848)Insert_data_value(head, 823, 9992)Print_all(ptr=head)  # 输出所有数据print()Del_Node_Index(head, 5)Print_all(ptr=head)  # 输出所有数据Del_Node_Value(head, 9992)print()Print_all(ptr=head)  # 输出所有数据print()print(Query_data_index(head, 2))print(Query_data_value(head,99))

python 链表的增删改查相关推荐

  1. 通用版!完整代码,单链表SingleLinkedList增删改查,反转,逆序,有效数据等Java实现

    文章目录 节点类 链表类(主要) 测试类 小结 节点类 可以根据需要,对节点属性进行修改.注意重写toString()方法,以便后续的输出操作. //节点类 class Node {public in ...

  2. python实现hbase增删改查

    一.hbase shell创建命名空间 hbase shell create_namespace "gofish" 二.python实现hbase增删改查 # -*- coding ...

  3. 单链表实现增删改查(含头结点)

    ** 单链表实现增删改查(含头结点) ** **## 单链表** package com.Linked;public class HeadLinked {public String name;// 链 ...

  4. C语言 单链表的增删改查

    单链表的增删改查 目录 单链表的增删改查 链表的创建和输出(有头结点) 链表的查找 链表的删除 链表的修改 链表是一种最常见地采用动态存储分配方式的数据结构,相较于数组而言它更加灵活. 单链表的特点 ...

  5. 2020-12-13# **链表的增删改查,逆置**

    链表的增删改查,逆置,长度,排序,是否为空 1.``准备阶段## ## # include<stdio.h> # include<stdlib.h>typedef struct ...

  6. 带头节点单链表的增删改查

    单链表有很多结构循环单链表,有头节点的单链表,无头节点的单链表,双节点单链表,以下源码是以有一个头节点的单链表为例写的增删改查的各种功能,就是下图 然后各个注释也在函数后面写着,这玩意确实还挺难,源码 ...

  7. java单链表 提供增删改查_java实现单链表增删改查的实例代码详解

    package 数据结构算法.链表; /* *定义节点 * 链表由节点构成 */ public class node { private e e; //数据data private node next ...

  8. python对excel增删改查语句_利用python模拟sql语句对员工表格进行增删改查

    本文主要给大家介绍了关于python模拟sql语句对员工表格进行增删改查的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍: 具体需求: 员工信息表程序,实现增删改查操作: 可进行模糊查询, ...

  9. python对excel增删改查_利用python模拟sql语句对员工表格进行增删改查

    本文主要给大家介绍了关于python模拟sql语句对员工表格进行增删改查的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍: 具体需求: 员工信息表程序,实现增删改查操作: 可进行模糊查询, ...

最新文章

  1. 方舟原始恐惧mod生物代码_主播在《方舟生存进化》成功打造幽灵城堡,可怕的怪物在这里横行...
  2. Leaflet中使用leaflet-echarts插件实现Echarts的Migration迁徙图
  3. java连接数据库sql server_将SQL Server数据库连接到Java
  4. CS184.1X 计算机图形学导论 第8讲 学习笔记
  5. 软件测试面试-测试的目的是什么?【高频】
  6. DensePose开源了,2D变3D人体姿势实时识别 | Facebook@CVPR 2018
  7. zookeeper OOM问题排查
  8. DCL文件里面的数据怎么给LSP,button控件
  9. 大智慧加密指标源码恢复,指标破解工具
  10. vivado2017.4开发vc707(virtex7)(一)上电调试
  11. 整个AppData目录挪到D盘方法
  12. 3D NAND“大连造”
  13. python opencv合并图片
  14. 有内鬼,终止换脸!用Landmarks Debug找出不老实的脸。
  15. 1-AO3402MOS管使用
  16. 打开jpg显示没有注册类 打开txt显示找不到文件位置 画图板也打不开,总之微软默认的应用都打不开 解决方案如下:
  17. Android SDK介绍
  18. 看论文需要用到的一些专业词汇【SOTA,Benchmark,Baseline】
  19. Prometheus和Grafana告警服务创建与对接腾讯云短信告警平台(prometheus_alert)
  20. 叶武滨老师时间管理学习感悟

热门文章

  1. html怎么比较时间,javascript怎么对比日期?
  2. 项目风险管理的5大关键点,你做了几点?
  3. 生活随笔:天热得让人烦躁
  4. 关于H5 开发app应用 移动端无法访问后台服务的总结
  5. ofice2007 没有下拉框模糊查询功能
  6. python wordcloud mask_python通过wordcloud绘制词云
  7. html5 泡泡堂,HTML5 拖放 - 彩色泡泡糖的个人空间 - OSCHINA - 中文开源技术交流社区...
  8. 小程序iPhonex适配
  9. 【LSTM车速预测】基于matlab麻雀算法优化LSTM车速预测(含前后对比)【含Matlab源码 2063期】
  10. 笑话:流传硅谷的一则冷笑话