我们知道,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))
由上,我们就实现了一个线性表的实现,关于线性表的各种操作,如建立空表,初始化的表,表的修改,表的遍历等,都进行了实现。