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