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()
结果如下: