# encoding=utf-8class Node(object):"""节点类"""def __init__(self, item):"""初始化函数:param item:  要保存的用户数据"""self.item = itemself.next = Noneclass SingleLinkList(object):"""单链表"""def __init__(self, node=None):"""初始化函数r:param node: 可传可不传的头节点"""# 指向头节点self.__head = nodedef is_empty(self):"""链表是否为空"""return self.__head is Nonedef length(self):"""链表长度"""current = self.__headcount = 0while current is not None:count += 1current = current.nextreturn countdef travel(self):"""遍历整个链表 要考虑空链表如果是空链表判断条件不成立也就不输出任何信息"""current = self.__headwhile current is not None:print(current.item, end="")current = current.nextprint("")  # 多输出换行def add(self, item):""""在链表头部插入元素"""node = Node(item)node.next = self.__headself.__head = nodedef append(self, item):""""在链表尾部插入节点"""node = Node(item)cur = self.__headif cur is None:self.add(item)returnwhile cur.next is not None:cur = cur.nextcur.next = nodedef insert(self, pos, item):"""指定位置添加元素"""# 在头结点插入元素if pos <=0:self.add(item)# 在链表的尾部添加元素elif pos >= self.length():self.append(item)# 在链表的任意位置添加元素else:cur = self.__headcount = 0# 找到添加位置的前一个位置while count < (pos-1):count += 1cur = cur.nextnode = Node(item)node.next = cur.nextcur.next = nodedef remove(self, item):"""删除节点:param item: 要删除的元素:return:"""cur = self.__headpre = Nonewhile cur is not None:# 找到了元素if cur.item == item:# 在头部找到了元素if cur == self.__head:self.__head = cur.nextelse:pre.next = cur.nextreturnpre = curcur = cur.nextdef search(self, item):"""查找节点是否存在:param item: 要查找的element:return:"""cur = self.__headwhile cur is not None:if cur.item == item:return Truecur = cur.nextreturn Falseif __name__ == '__main__':ll = SingleLinkList()print(ll.length())ll.append(1)   # 1print(ll.length())ll.travel()ll.append(2)   #1 2print(ll.length())ll.travel()ll.add(3)   # 3 1 2
    ll.travel()ll.add(4) # 4 3 1 2
    ll.travel()ll.insert(0, 5)  # 5 4 3 1 2
    ll.travel()ll.insert(10, 6)  # 5 4 3 1 2  6
    ll.travel()ll.insert(3, 7)  # 5 4 3  7 1 2  6
    ll.travel()ll.remove(5)  #  4 3  7 1 2  6)
    ll.travel()ll.remove(6)  #  4 3  7 1 2
    ll.travel()ll.remove(7)  #  4 3  1 2
    ll.travel()ll.remove(4)  #  3  1 2
    ll.travel()ll.remove(3)  #   1 2
    ll.travel()ll.remove(1)  #  2
    ll.travel()ll.remove(2)ll.travel()

转载于:https://www.cnblogs.com/wgDream/p/7513662.html

python-实现单链表相关推荐

  1. python实现单链表与双向链表

    首先看单链表class Chain(): def __init__(self):self.first = Noneself.length = 0def is_empty(self):"&qu ...

  2. 使用python定义单链表

    前言 文章来源:CSDN@LawsonAbs 使用python定义一个单链表 链表是面试考察的一个重要部分,下面就介绍如何使用python定义一个单链表. 1. 定义一个节点类 class Node: ...

  3. python实现单链表快速排序升序linkedqueue_同时对多个数组进行排序

    关于 同时对多个数组进行排序的搜索结果 回答 本人学习数据结构时看到的不错的总结,共享一下了 文件有一组记录组成,记录有若干数据项组成,唯一标识记录的数据项称关键字; 排序是将文件按关键字的递增(减) ...

  4. python反转单链表

    原始单链表 反转后单链表 思路: 对于每个节点来说,把她的下一个节点,改为他的上一个节点,然后把下一个节点继续变换 建两个临时变量,上一个节点pred,下一个节点next,初始化为None 第1步,开 ...

  5. 数据结构与算法-python描述-单链表

    # coding:utf-8# 单链表的相关操作: # is_empty() 链表是否为空 # length() 链表长度 # travel() 遍历整个链表 # add(item) 链表头部添加元素 ...

  6. python实现单链表快速排序升序linkedqueue_数据结构1

    一. ( (本题 15 分)试设计一个结点数据类型为整型的带表头结点的有序单 链表,然后设计一个算法,该算法将这个有序单链表划分成两个单链表,使 得第一个单链表中包含原单链表中所有数值为奇数的结点, ...

  7. python实现单链表快速排序升序linkedqueue_LeetCode 总结 - 搞定 Linked List 面试题

    链表删除 [203] Remove Linked List Elements [19] Remove Nth Node From End of List [83] Remove Duplicates ...

  8. python求单链表的长度_709. 设计链表(Python)

    题目 难度:★★☆☆☆ 类型:链表,设计题 设计链表的实现.您可以选择使用单链表或双链表.单链表中的节点应该具有两个属性:val 和 next.val 是当前节点的值,next 是指向下一个节点的指针 ...

  9. python实现单链表快速排序升序linkedqueue_数据结构回顾

    顺序结构 顺序栈(Sequence Stack) 1 2 3 4 5 6typedef struct { ElemType *elem; int top; int size; int incremen ...

  10. Python的单链表实现

    一.单向链表实现 在单向链表结构中,每个节点包含两部分,元素部分和指针部分,其中元素部分即为节点的值,指针部分指向下一个节点或者None,另外,为了找到第一个节点,需要定义一个头结点head,它只含有 ...

最新文章

  1. js 各种循环的区别与用法(for in,forEach,for of)
  2. [Js代码风格]浅析模块模式
  3. struts2自定义拦截器并配置拦截器使其生效
  4. Report20201016 benchmark vs袁颖 PANTHER初步模拟结果
  5. python 赋值 浅copy_python – 浅拷贝,deepcopy和正常赋值操作之间的区别是什么?
  6. openvc学习笔记(4)——两种方法在没有环境下运行程序
  7. 分布式文件系统研究-测试-搭建测试环境
  8. hive添加字段报conflicting lock
  9. 怎样在数据绑定到DATAGRID之前,先判断其中一个字段是否为空?
  10. pythonpandas分析数据_python 数据分析--pandas
  11. seleniumpython定位网页元素方法_Python+Selenium 定位元素
  12. 20. Feature分支
  13. LINQ TO SQL 动态查询
  14. 从国家大剧院古典音乐频道下载音乐
  15. IDM下载工具(免费下载视频、音乐、图片等文件)
  16. html图片橡皮擦特效,原生制作的js涂鸦画板特效 可调画笔颜色|粗细|橡皮檫功
  17. 12306抢票使用教程
  18. CentOS 7.6安装Mysql5.7
  19. 【英语阅读】纽约时报 | 全球走向重新开放,生活在“试错”中继续
  20. 用uniapp实现微信小程序的电子签名效果

热门文章

  1. Ubuntu Server 命令行下的默认语言 中文乱码
  2. bootloader烧写
  3. SAP BI基本概念
  4. cisco vrrp
  5. linux安装tree命令
  6. 链表删除最小值,倒叙
  7. Codeforces Round #514 (Div. 2)题解
  8. [bzoj2506] calc
  9. RESTful Android
  10. sigsuspend的理解