怎么使用Python仿照C语言来实现线性表的顺序存储结构
怎么使用Python仿照C语言来实现线性表的顺序存储结构
今天小编给大家分享一下怎么使用Python仿照C语言来实现线性表的顺序存储结构的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
代码:
#!/usr/bin/envpython#-*-coding:utf-8-*-__author__='MrHero'classNode(object):"""线性表的存储结构和C语言中的链式存储结构类似"""def__init__(self,data=None):self.data=dataself.next=NoneclassLKList(object):"""线性表的具体操作"""def__init__(self):"""相当于初始化线性表,即创建头结点头节点为空节点,占据位置号为0创建好的表即为:头节点[0]->节点[1]->节点[2]->节点[3]->节点[4]:return:"""self.L=Node(None)self.L.next=Noneself.length=0defis_empty(self):"""判断线新表的长度:return:"""returnself.length==0defget_length(self):"""获取线新表的长度:return:"""returnself.lengthdefinsert(self,i,elem):"""在指定位i处置插入元素elem:parami:指定的位置:paramelem:插入的元素elem:return:"""j=0p=self.Lwhilej<i-1andpisnotNone:#查找第i-1个节点j+=1p=p.nextifpisNone:#未找到逻辑位序为i-1的节点raiseIndexError("Indexisoutofrange!")else:#找到逻辑位序为i-1的节点tmp=Node(elem)tmp.next=p.nextp.next=tmpself.length+=1defdelete(self,i):"""删除指定节点的元素:parami:指定节点:return:删除的指定节点元素值"""ifself.is_empty():raiseIndexError("Thelistisempty!")elif0<i<=self.length:j=1p=self.Lwhilej<iandp:p=p.nextj+=1delelte_node=p.nextp.next=delelte_node.nextself.length-=1returndelelte_node.dataelse:raiseIndexError("Indexisoutofrange!")defget_elem(self,i):"""获取某个节点的值:parami::return:返回某个节点的值"""ifself.is_empty():raiseIndexError("Thelistisempty")elif0<i<=self.length:j=0p=self.Lwhilej<iandp:p=p.nextj+=1printp.dataelse:raiseIndexError("Indexisoutofrange!")deflocate_elem(self,elem):"""查找某值的位置:paramelem::return:返回第一个值等于elem的位置"""j=0p=self.LwhilepisnotNoneandp.data!=elem:p=p.nextj+=1ifpisNode:return-1else:returnjdefcreate_dict_list_H(self,list):"""头插法建表:paramlist::return:"""p=self.Lforiinrange(len(list)):tmp=Node(list[i])tmp.next=p.nextp.next=tmpself.length+=1defcreate_dict_list_E(self,list):"""尾插法建表:paramlist::return:"""p=self.Lr=pforiinrange(len(list)):tmp=Node(list[i])r.next=tmpr=tmpself.length+=1r.next=Nonedefshow_lklist(self):ifself.is_empty():raiseIndexError("It'saemptylist!")else:j=1p=self.Lwhilej<=self.lengthandp:p=p.nextifpisnotNone:printp.dataj+=1if__name__=='__main__':lk=LKList()##lk.create_dict_list_E([1,2,3,4])#print"-----"#lk.get_elem(1)#lk.get_elem(2)#lk.get_elem(3)#lk.get_elem(4)#print"-------"#lk.show_lklist()#lk.insert(3,5)#print"-------"#lk.show_lklist()#lo=lk.locate_elem(5)#print"locationis%d"%lo#lk.delete(4)#print"-------"#lk.show_lklist()
以上就是“怎么使用Python仿照C语言来实现线性表的顺序存储结构”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注恰卡编程网行业资讯频道。
推荐阅读
-
python(中无效的十进制怎么解决 python怎么转换进制)
python怎么转换进制?Python执行二进制转换:1.十进制到二进制(bin)首先,让让我们看看如何将十进制转换成二进制。我...
-
python怎么清除完全相同的行(python splte如何分隔有多个相同符号的str)
pythonsplte如何分隔有多个相同符号的str?str你的string内容str_(相同的符号)执行完了以后再在相同符号的...
-
python(编程控制电脑关机 如何控制电脑关机)
如何控制电脑关机?可以在电脑的运行窗口中输入输入公式,给电脑可以设置自动关机。1.按开快捷键winr然后打开运行窗口。2.在运行窗...
-
python中的特殊标识符(python 中 标识符中可以有逗号吗)
python中标识符中可以有逗号吗?在python语言中合法的标识符是字母、数字以及_,所以我合法的标识符中肯定不能有逗号if...
-
python(excel 提取数据写入新表 python导入excel数据找不到工作簿)
python导入excel数据找不到工作簿?我可以导入数据后找不到工作,不是因为他的工作没有被转移。什么软件可提取并合并Exce...
-
python中字典定义的四种方法(python global关键字的用法详解)
pythonglobal关键字的用法详解?global标志实际上是目的是提示python讲解器,说被其修饰的变量是全局变量。这样...
-
python(array用法 python如何对两个数组做差处理)
python如何对两个数组做差处理?Python中的列表中的元素肯定不能真接相加,减。t最佳的位置的是将列表装换成Python中的...
-
python多行注释符号怎么表示
python多行注释符号怎么表示这篇文章主要介绍“python多行...
-
python支持的操作系统是什么
python支持的操作系统是什么这篇文章主要介绍“python支持...
-
C/C++如何获取CAN信号