ds2list数据结构和算法Python语言版线性表_第1页
ds2list数据结构和算法Python语言版线性表_第2页
ds2list数据结构和算法Python语言版线性表_第3页
ds2list数据结构和算法Python语言版线性表_第4页
ds2list数据结构和算法Python语言版线性表_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

由于元素 数据结构和算法(Python语言版):线性表 数据结构和算法(Python语言版):线性表 实 把表元素分 在结点里

建 C等基本编程语言里,这方面的技术细节很多,用起来也比较麻在Python等编程语言里,对这类技术的支持非常全面。我们可以 域域在单链表里,与表里的n个元素对应的n个结点通过 数据结构和算法(Python语言版):

数据结构和算法(Python语言版):

对象标识的值(Python里自然应该用None),称为空 ^数据结构和算法(Python语言版):^

数据结构和算法(Python语言版):线性表 考 在一些语言(C语言)所有结点。Python程序 比

首端加入:1)创建一个新结点存入数据;2)把原链表首结点的 域;3)修改表头变量使之 数据结构和算法(Python语言版):

数据结构和算法(Python语言版):

尾端加入:1)创建一个新结点存入数据;2)表空时直接让表头变量引用这个新结点并结束,否则找到表尾结点;3)令表尾结点的域引用这一新结点,并将新结点的域设置为空^

^^定位加入:1)找到新结点加入位置的前一结点,不存在时结束;2)创建新结点存入数据;3)修改前一结点和新结点的 数据结构和算法(Python语言版):线性表 数据结构和算法(Python语言版):线性表

加入元素(T(分配的时间 其他删除通常需要扫描整个表或其一部分,O(n)数据结构和算法(Python语言版):

数据结构和算法(Python语言版):

))^^ 数据结构和算法(Python语言版):线性表

实 classLNodedefinit(self,elm,nxt):self.elem=elmself.next=nxt简单的使用代码(Python允许直 llist1=LNode(1,None);pnode=llist1foriinrange(2,11):pnode.next=LNode(i,None)pnode=pnode.nextpnode=whilepnodeisnotNone:pnode=pnode.next数据结构和算法(Python语言版):线性表 我们希望基于结点LNode定义一 classdefinit(self):defreturnself.head==defprepend(self,self.head=LNode(elem,LListhead域,指向表中的首结点。几个操作(方法prepend在表首端加入一个包含新元素的(新)

defappend(self,elem):ifself.head==self.head=LNode(elem,None)p=whilep.next!=p=p.next=LNode(elem, 复杂性 数据结构和算法(Python语言版):

数据结构和算法(Python语言版):

defpop(self)ifself.head==raiseValueErrore=self.head.elemself.head=returndefpo ifself.head==None:#emptylistraiseValueErrorp=self.headifp.next==None:#listwithonlyonee=p.elem;self.head=Nonereturnewhilep.next.next!=None:#tillp.nextbethelastnodep=p.nexte=p.next.elem;p.next= return 数据结构和算法(Python语言版):线性表

deffind(selfpredpredp=whilep!=ifpred(p.elem):returnp.elemp=p.nextreturndefprintall(self)p=self.headwhilep!=None:p=p.next请查看基本类型list的操作,想想如何为这个 数据结构和算法(Python语言版):线性表 mlist1=foriinrange(10):foriinrange(11,20):10个元素(整数9个元素(整数

^数据结构和算法(Python语言版):

数据结构和算法(Python语言版):

#方法定义和其他LNodeLListobject作为基类

带尾结 LList1LListLListclassdefinitLList.init(selfLListself.rear=defprepend(self,self.head=LNode(elem,ifself.rear==None:#theemptyself.rear=self.head#rearpointsalsotothenewdefappend(self,elem):ifself.head==self.prepend(elem)#callprepend,dotheself.rear.next=LNode(elem,None)self.rear=self.rear.next数据结构和算法(Python语言版):线性表 数据结构和算法(Python语言版):线性表 带尾结 defifself.headisraisee=ifself.rea

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论