您的位置:首页 > 理论基础 > 数据结构算法

python列表数据结构的python实现

2018-09-23 21:35 274 查看
版权声明:本文为博主原创文章,未经博主允许可以转载。 https://blog.csdn.net/killeri/article/details/82825137

我们知道,python列表已经实现了一个线性表的所有操作和结构要求,它是通过C语言实现的,那么我们今天就用python语言本身再实现一次线性表的数据结构。

class List:
def __init__(self, *elements):
self._list = list(*elements)

def __str__(self):
return str(self._list)

def is_empty(self):
if len(self._list):
return False
return True

def len(self):
return len(self._list)

# 在表第一项进行插入
def prepend(self, elem):
self._list.insert(0, elem)

# 最后一项进行插入
def append(self, elem):
self._list.append(elem)

def insert(self, elem, i):
self._list.insert(i, elem)

def del_first(self):
del self._list[0]

def del_last(self):
del self._list[len(self._list)-1]

# 查找elem在列表中的所有下标,有,就返回下标列表;没有,就返回-1。
def search(self, elem):
_ls = list()
for i in range(len(self._list)):
if self._list[i] == elem:
_ls.append(i)
if _ls:
return _ls
return -1

def forall(self, add):
return [add(i) for i in self._list]
# 这里返回了一个新列表,而不是之前的self._list,所以要注意

def addone(x):
x += "addone"
return x

emptyList = List()
print(emptyList.is_empty())
print(emptyList.len())
emptyList.prepend("head")
emptyList.append("tail")
emptyList.insert("insertElement", 1)
print(emptyList)
print(emptyList.is_empty())
print(emptyList.len())

emptyList.del_first()
emptyList.del_last()

print(emptyList.search("insertElement"))
print(emptyList.search("head"))

emptyList.forall(addone)
print(emptyList.forall(addone))

由上,我们就实现了一个线性表的实现,关于线性表的各种操作,如建立空表,初始化的表,表的修改,表的遍历等,都进行了实现。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: