#### 栈 class Stack(object): def __init__(self): self.__list = [] def push(self, item): self.__list.append(item) def pop(self): self.__list.pop() def peek(self): if self.__list: return self.__list[-1] else: return None def is_empty(self): return self.__list == [] # return not self.__list def size(self): return len(self.__list) if __name__ == "__main__": s = Stack() #### 队列 class Queue(object): def __init__(self): self.__list = [] def enqueue(self, item): self.__list.append(item) def dequeue(self): return self.__list.pop(0) def is_empty(self): return self.__list == [] def size(self): return len(self.__list) if __name__ == "__main__": s = Queue() s.enqueue(1) s.enqueue(2) print(s.dequeue()) print(s.dequeue()) """链表 单向链表""" class Node(object): # 构造节点 # 两个元素,节点,指向的节点 def __init__(self, element): self.element = element self.next = None class SingleLinkList(object): # 定义单链表 def __init__(self): self.head = None def is_empty(self): return self.head == None def length(self): # 长度 # cur游标用来移动遍历节点 cur = self.head count = 0 while cur != None: count += 1 cur = cur.next return count def travel(self): # 遍历整个链表 cur = self.head while cur: print(cur.element) cur = cur.next 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: cur = self.head while cur.next: cur = cur.next cur.next = node def insert(self, pos, item): # 任意位置添加元素 if pos < 0: self.add(item) elif pos >= self.length()-1: self.append(item) else: pre = self.head count = 0 while count < (pos-1): count += 1 pre = pre.next # 当循环退出后,pre指向pos-1位置 node = Node(item) node.next = pre.next pre.next = node def remove(self, item): # 删除节点 cur = self.head pre = None while cur: if cur.element == 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 cur: if cur.element == item: return True else: cur = cur.next return False if __name__ == "__main__": ls = SingleLinkList() print(ls.is_empty()) print(ls.length()) ls.append(1) ls.append(2) ls.append(3) ls.append(4) ls.append(5) ls.append(6) ls.insert(2, 100) ls.travel() print(ls.search(1))
python数据结构:栈,队列,二叉树
猜你喜欢
转载自blog.csdn.net/tyz_tyz/article/details/80009709
今日推荐
周排行