1、线性表
是一种由n个元素(n>= 0 )数据元素组成的有限序列,所包含的元素数量通常被称为表的长度
n = 0 的表被称为空表,线性表的数据元素可以单一也可以复杂,可以是整数,字符串,也可以是由几种数据来做。
2、线性表的存储
有两种方式分别是顺序存储和链式存储
1、链式存储
链式存储通过一组含有指针的存储单元来存储线性表的数据和他们的逻辑顺序(采用这种方式存储的通常被称为单链表)
2、线性存储
按照逻辑顺序来进行存放在地址连续的存储单元中使得逻辑上相邻的元素在物理位置上相邻(在python中的list和tuple都可以实现顺序表)
3、单链表操作
下面是代码:
class Node(object): # 节点
def __init__(self, ele):
self.ele = ele
self.next = None
class SinkList(object): # 创建单链表
def __init__(self, node=None):
self.__head = node
def is__empty(self): # 判断是否为空
return self.__head is None
def length(self): # 链表长度
cu = self.__head
cout = 0
while cu is not None:
cout += 1
cu = cu.next
return cout
def travl(self):
cu = self.__head
while cu is not None:
print(cu.ele, end=' ')
cu = cu.next
print("\n")
def add(self, item): # 在链表首部添加元素
node = Node(item)
node.next = self.__head
self.__head = node
def append(self, item): # 在链表尾部添加元素
node = Node(item)
if self.is__empty():
self.__head = node
else:
cu = self.__head
while cu.next is not None:
cu = cu.next
cu.next = node
def insert(self, index, item): # 在指定位置添加元素
if index < 0:
self.add(item)
elif index > self.length() - 1:
self.append(item)
else:
per = self.__head
cout = 0
while cout < index - 1:
cout += 1
per = per.next
def remove(self, item): # 删除节点
cur = self.__head
pre = None
while cur is not None:
if cur.ele == item:
if cur == self.__head:
self.__head = cur.next
else:
pre.next = cur.next
break
else:
pre = cur
cur = cur.next
def search(self, item): # 查找节点是否存在
cur = self.__head
while not cur:
if cur.ele == item:
return True
else:
cur = cur.next
return False
if __name__ == "__main__":
si = SinkList()
print(si.is__empty())
print(si.length())
si.append(3)
si.add(999)
si.insert(-3, 110)
si.insert(99, 111)
print(si.is__empty)
print(si.length())
si.travl()
si.remove(111)
si.travl()
结果如下:



















