python链表的实现,有注释
class Node(): #node实现,每个node分为两部分:一部分含有链表元素,成数据域;另一部分为指针,指向下一个
__slots__=['_item','_next'] #限定node实例的属性??? 这个元素就是有两部分组成,,,一个指针一个数据,,,但是链表头就不是这样了
def __init__(self,item):
self._item=item
self._next=None #node的指针部分默认指向none,这个是单链表,所以每个元素只有一个指针
def getItem(self):
return self._item
def getNext(self):
return self._next
def setItem(self,newitem):
self._item=newitem
def setNext(self,newnext):
self._next=newnext
class SingleLinkedList(): #单链表,,,,python支持在函数中间定义变量,而且还不用定义类型,随用随取,所以你看见一个变量的时候,就表明此刻就有这个变量了
def __init__(self):
self._head=None #初始化为空链表,空链表实际上不包含node,,只有一个空的头 头里面有head指针(用于指向第一个node),有current指针(用于遍历node)???
def isEmpty(self): #检测链表是否为空,
return self._head==None
def size(self):
current=self._head
count=0
while current!=None:
count+=1
current=current.getNext()
return count
def travel(self): #输出每个node的值
current=self._head
while current!=None:
print current.getItem()
current=current.getNext()
def add(self,item): #在链表端段添加元素
temp=Node(item) #创建一个node,
temp.setNext(self._head) #新node的指针,self不再是node而是SingleLinkedList,,
self._head=temp #岂不是自己指向自己????搞不懂self???,,这里的self不再是node了,而是SingleLinkedList,,,即单链表是另一个类了,,,这里是单链表类是由node类组成的
def append(self,item): #在链表尾部添加元素
temp=Node(item) #生成一个node(链条上的一个链子)
if self.isEmpty():
self._head=temp #若为空表,将添加的元素设为第一个元素,,,,self的head指针指向了新建的元素temp
else:
current=self._head #current是什么东西???
while current.getNext()!=None:
current=current.getNext() #遍历链表
current.setNext(temp) #此时current为链表最后的元素
def search(self,item): #检索元素是否在链表中
current=self._head
founditem=False
while current!=None and not founditem: #如果我想在a>0或者b>0且a,b不同时大于0的情况下返回True:(a>0 or b>0) and not (a>0 and b>0)
if current.getItem()==item:
founditem=True
else:
current=current.getNext()
return founditem
def index(self,item): #索引元素在链表中的位置
current=self._head
count=0
found=None
while current!=None and not found: #not优先级大于and大于or and两个都为真才是真
count+=1
if current.getItem()==item:
found=True
else:
current=current.getNext()
if found:
return count
else:
raise ValueError,'%s is not in linkedlist'%item
def remove(self,item): #删除链表中的某项元素
current=self._head
pre=None
while current!=None:
if current.getItem()==item:
if not pre:
self._head=current.getNext()
else:
pre.setNext(current.getNext())
break
else:
pre=current
current=current.getNext()
def insert(self,pos,item): #链表中插入元素
if pos<=1:
self.add(item)
elif pos>self.size():
self.append(item)
else:
temp=Node(item)
count=1
pre=None
current=self._head
while count<pos:
count+=1
pre=current
current=current.getNext()
pre.setNext(temp)
temp.setNext(current)
if __name__=='__main__':
a=SingleLinkedList() #建立类的对象,,,实际上就是用 SingleLinkedList类扣出了一个蛋糕a,,,就是建链表头的过程
for i in range(1,10):
a.append(i)
print a.size()
a.travel()
print a.search(6)
print a.index(5)
a.remove(4)
a.travel()
a.insert(4,100)
a.travel()
///
运行结果
:
runfile('E:/pythonprogram/GXTon/main.py', wdir='E:/pythonprogram/GXTon')
9
1
2
3
4
5
6
7
8
9
True
5
1
2
3
5
6
7
8
9
1
2
3
100
5
6
7
8
9
转载于:https://www.cnblogs.com/chulin/p/8883382.html
python链表的实现,有注释相关推荐
- python语言中如何使用注释
每一种计算机语言都有自己的注释方式,我们知道注释的作用是解释这些代码,方便程序员以后的检查和修改.而且注释的一部分在运行程序的过程中不起作用,也不会显示出来.下面我们将为大家介绍,在python语言中 ...
- Python 为什么用 # 号作注释符?
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者:豌豆花下猫 来源:Python猫 关于编程语言中的注释,其重 ...
- python为什么用号做注释符_Python为什么用#号作注释符?
Apple iPhone 11 (A2223) 128GB 黑色 移动联通电信4G手机 双卡双待 4999元包邮 去购买 > 关于编程语言中的注释,其重要性基本上已为大家所共识. 很多人学习py ...
- python语言的两种注释方法_python编程时添加中文注释的方法
python编程时添加中文注释的方法 发布时间:2020-08-24 17:09:52 来源:亿速云 阅读:77 作者:小新 这篇文章主要介绍python编程时添加中文注释的方法,文中介绍的非常详细, ...
- python多行注释符号_涨知识Python 为什么用 # 号作注释符?
- START -关于编程语言中的注释,其重要性基本上已为大家所共识.然而关于注释的规范,这个话题就像我们之前聊过的缩进.终止符和命名方式一样,众口难调.注释符通常可分为两种,即行注释与块注释(inl ...
- 排序算法基本介绍及python实现(含详细注释)
对数组排序可以说是编程基础中的基础,本文对八种排序方法做简要介绍并用python实现. 代码中注释很全,适合复习和萌新学习.这是刚入学自己写的,可能难免比不上标准的写法,但是懒得改了. 文末会放和排序 ...
- Python学习入门基础:注释、变量基本使用、变量的命名
一.注释 注释的作用 单行注释(行注释) 多行注释(块注释) 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多已经做案例的人,却不 ...
- Python 的多文件和注释
多文件项目的演练 开发 项目 就是开发一个 专门解决一个复杂业务功能的软件 通常每 一个项目 就具有一个 独立专属的目录,用于保存 所有和项目相关的文件 一个项目通常会包含 很多源文件 目标 在项目中 ...
- python为什么用号做注释符_Python 为什么用 # 号作注释符?
关于编程语言中的注释,其重要性基本上已为大家所共识. 然而关于注释的规范,这个话题就像我们之前聊过的缩进.终止符和命名方式一样,众口难调. 注释符通常可分为两种,即行注释与块注释(inline/blo ...
最新文章
- windows下安装mongodb步骤
- java创建医生的对象_基于安卓Android的作物医生App设计开发(MySQL)(含录像)
- 初等数论--原根--原根间的关系,原根个数
- Automatic Diagnostic Repository Command-Interpreter
- 2021年2月2日 - cxFocus Directive的单元测试不够稳定,有时候findFirstFocusable会多执行一次
- P1463-[POI2002][HAOI2007]反素数【约数,数论】
- GARFIELD@12-30-2004
- 【Flink】改进的BLOB存储架构
- 1. Go语言顺序程序设计,错误处理
- 【读书笔记《Android游戏编程之从零开始》】12.游戏开发基础(Canvas 画布)
- win10+android+手机驱动,win10系统电脑没有手机驱动的解决方法
- uinapp下拉刷新,更新列表数据
- 计算机技能高考素材,高中作文万能通用素材 2021高考必备作文素材
- 【QT 5 学习笔记-学习绘图相关+画线图形等+绘图事件+基础学习(1)】
- win10系统用激活码激活,用dos命令来激活,只能激活半年时间,暂时没找到永久的。
- pinyin4j使用说明
- DNS服务器and路由器与交换机
- 如何制作一个自定义的winpe?
- FTL——垃圾回收GC (Garbage Collection)
- 世界十大杰出物理学家
热门文章
- 剑指offer-3(替换空格)
- phpstudy添加redis扩展
- cp: omitting directory解决方案
- NSDictionary NSArray 转中文输出
- (转)CocoaPods:管理Objective-c 程序中各种第三方开源库关联
- cocos2d-x学习笔记之图片分辨率适配
- UTF-8、GB2312、GB18030、GBK和BIG5等字符集编码范围的具体说明
- SpatialHadoop中空间索引系列之(四)空间格网索引实现
- 用RAII技术管理资源及其泛型实现
- nodejs 本地php服务器,Nodejs搭建本地http服务器