数组

class myArray:def __init__(self, capacity):self._data = []self._capacity = capacitydef __getitem__(self, index):return self._data[index]def __setitem__(self, index, value):self._data[index] = valuedef __len__(self):return len(self._data)def __iter__(self):for item in self._data:yield itemdef find(self, index):try:return self._data[index]except IndexError:return Nonedef delete(self, index):try:self._data.pop(index)return Trueexcept IndexError:return Falsedef insert(self, index, value):if len(self) > self._capacity:return Falseelse:self._data.insert(index, value)def print_array(self):for i in self._data:print(i)def test():a = myArray(5)a.insert(1,2)a.insert(0,5)# a.delete(1)# d = a.__len__()# e = len(a)# print(d)# print(e)a.print_array()if __name__ == "__main__":test()

链表

import pdbclass Node:def __init__(self, value, next_node=None):self.value = valueself.next = next_nodedef get_data(self):return self.valueclass SinglyLinkList():def __init__(self):self._head = Nonedef find_by_value(self,value):p = self._headwhile p and p.value != value:p = p.nextreturn pdef insert_node_to_head(self,node):if node:node.next = self._headself._head = nodedef insert_value_to_head(self,value):new_node = Node(value)self.insert_node_to_head(new_node)def insert_node_after(self,node,newnode):newnode.next = node.nextnode.next = newnodedef insert_value_after(self,node,value):newnode = Node(value)self.insert_node_after(node,newnode)def insert_node_before(self,node,newnode):if self._head == node:self.insert_node_to_head(newnode)returncurrent = self._headwhile current.next and current.next != node:current = current.nextnewnode.next = nodecurrent.next = newnodedef insert_value_before(self,node,value):newnode = Node(value)self.insert_node_before(node,newnode)def delete_by_node(self,node):if node.next:node.value = node.next.valuenode.next = node.next.nextreturn# pdb.set_trace()current = self._head# node is the last onewhile current and current.next != node:current = current.nextcurrent.next = node.nextdef print_all(self):current = self._headif current:print(f"{current.value}",end=" ")current = current.nextwhile current:print(f"{current.value}",end=" ")current = current.nextif __name__ ==   "__main__":l = SinglyLinkList()l.insert_value_to_head(1)nodel = l.find_by_value(1)l.insert_value_after(nodel,3)l.insert_value_after(nodel,4)l.insert_value_after(nodel,2)l.delete_by_node(nodel)print("----")l.print_all()

数据结构与算法学习--线性相关推荐

  1. 从零开始学数据结构和算法(二)线性表的链式存储结构

    链表 链式存储结构 定义 线性表的链式存储结构的特点是用一组任意的存储单元的存储线性表的数据元素,这组存储单元是可以连续的,也可以是不连续的. 种类 结构图 单链表 应用:MessageQueue 插 ...

  2. 数据结构与算法学习笔记之 从0编号的数组

    数据结构与算法学习笔记之 从0编号的数组 前言 数组看似简单,但掌握精髓的却没有多少:他既是编程语言中的数据类型,又是最基础的数据结构: 一个小问题: 为什么数据要从0开始编号,而不是 从1开始呢? ...

  3. 数据结构与算法学习笔记之 提高读取性能的链表(上)

    数据结构与算法学习笔记之 提高读取性能的链表(上) 前言 链表(Linked list)比数组稍微复杂一点,在我们生活中用到最常见的应该是缓存,它是一种提高数据读取性能的技术,常见的如cpu缓存,浏览 ...

  4. 数据结构与算法之线性表(超详细顺序表、链表)

    原创公众号:bigsai 文章已收录在 全网都在关注的数据结构与算法学习仓库 欢迎star 前言 通过前面数据结构与算法基础知识我么知道了数据结构的一些概念和重要性,那么我们今天总结下线性表相关的内容 ...

  5. 数据结构与算法学习④(哈夫曼树 图 分治回溯和递归)

    数据结构与算法学习④(哈夫曼树 图 回溯和递归 数据结构与算法学习④ 1.哈夫曼树 1.1.相关概念 1.2.哈夫曼树的构建 1.3.哈夫曼编码 1.4.面试题 2.图 2.1.图的相关概念 2.2. ...

  6. 数据结构与算法学习⑥(动态规划 题解 背包和打家劫舍问题)

    数据结构与算法学习⑥(动态规划 动态规划 1.初识动态规划 1.1.从贪心说起 1.1.1.贪心的特点 1.1.2.贪心的局限性 1.1.3.贪心失效后怎么办 1.1.4.从最优化问题到递归 1.2. ...

  7. c语言将AOE网络的数据写入TXT文档中,数据结构与算法学习辅导及习题详解.张乃孝版-C/C++文档类资源...

    数据结构与算法学习辅导及习题详解.张乃孝版.04年10月 经过几年的努力,我深深体会到,编写这种辅导书要比编写一本湝通教材困难得多. 但愿我的上述理想,在本书中能够得以体现. 本书的组织 本书继承了& ...

  8. 数据结构与算法学习笔记之先进先出的队列

    前言 队列是一种非常实用的数据结构,类似于生活中发排队,可应用于生活,开发中各个方面,比如共享打印机(先请求先打印),消息队列.你想知道他们是怎么工作的么.那就来一起学习一下队列吧 正文 一.队列的定 ...

  9. 黑马程序员 C语言数据结构与算法之线性表(链表/栈/队列/顺序表)

    C语言 链表基础知识清晰讲解(黑马) 讲的蛮好,就是音质不太好,有时听不清讲的啥! [黑马]数据结构与算法之线性表(链表/栈/队列/顺序表)[配套源码 嘛蛋,看错了,这是java的... 文章目录 链 ...

最新文章

  1. 如何在node.js中发出HTTP POST请求?
  2. oracle+监控索引使用,ORACLE 监控索引的使用
  3. windows mysql 开启日志功能_Windows下开启mysql日志功能
  4. Maven最佳实践 划分模块 配置多模块项目 pom modules
  5. RxJs combineLatest Operator 的数组用法
  6. linux init配置文件说明
  7. unity3d 求两个点长度_Unity3D实现体积光
  8. 移动视频监控摄像机分类与优势浅析
  9. 图解虚拟机三种网络连接方式
  10. 腾讯视频转码,把qlv格式转换成mp4格式
  11. c语言 验证码怎么写,JS验证码实现代码
  12. Django模板 render_to_string与render
  13. 详细介绍如何使用MATLAB中的机器人工具箱建立机器人模型(DH法建模)(机械臂)
  14. 《Flutter入门疑难杂症》ios deactivate没反应的解决方案
  15. Python-docx实战:同事要我帮忙补写178份日报!别吧
  16. Python添加下拉菜单
  17. 微机原理——8086系统的概述与引脚介绍
  18. 远程桌面无法连接远程计算机是什么原因?
  19. java.lang.IllegalArgumentException的问题解决
  20. 编写程序,输入本金、年利率和年份,计算复利(结果保留2位小数)

热门文章

  1. 两段视频合成一个视频用什么软件 怎么把两段视频合成一段看不出来
  2. 销售谈判技巧培训分享
  3. 统计多个渠道App下载量效果
  4. (十二)采购与入库数据表
  5. 剑指 Offer 58 - II. 左旋转字符串
  6. 关于人性的20句箴言
  7. SpringBoot 集成 WebSocket 实现消息群发推送
  8. numpy.triu、numpy.triu_indices、np.triu_indices_from函数使用
  9. Android源码编译及替换成自己编译的linux内核
  10. 《今日影评》前瞻《疯狂的外星人》:喜剧远大于科幻