线性数据结构:数据项之间具有一对一的线性关系,除了第一个和最后一个数据项之外,每个数据项都有且仅有一个前驱和一个后继。
1.线性表:由有穷个元素组成,由一块连续内存顺序地存储在表中的元素。 也称为顺序表或连续表。可增删改查 2.栈:有序集合LIFO(后进先出)结构。添加、移除新项在顶部。 创建、添加、删除、判断是否为空、返回栈item数量 3.队列:有序集合FIFO(先进先出)结构。队尾添加,队首移除,。 创建、添加、删除、判断是否为空、返回栈item数量
from collections import deque
def linear_list():
# Python的内置列表(list)本质上就是一个线性表
list = [1,2,3,4,5]
print(list[0])
list.append(6)
list.remove(3)
list[1] = 10
print(list)
linear_list()
class Stack:
# Python没有内置的栈,使用列表实现效果
def __init__(self):
self.items = []
def is_empty(self):
# 长度=0返回True, 否则返回false
return len(self.items) == 0
def push(self,item):
self.items.append(item)
def pop(self):
if not self.is_empty():
# pop() 移除并返回最后一个元素
return self.items.pop()
else:
raise IndexError('pop from empty stack')
def peek(self):
if not self.is_empty():
# 访问最后一个元素
return self.items[-1]
else:
raise IndexError('peek from empty stack')
def size(self):
return len(self.items)
stack = Stack()
stack.push(1)
stack.push(2)
stack.push(3)
print(stack.is_empty())
print(stack.pop())
print(stack.peek())
class Queue:
# Python collections.deque是一个双端队列
def __init__(self):
self.items = deque()
def is_empty(self):
# 长度=0返回True, 否则返回false
return len(self.items) == 0
def enqueue(self,item):
self.items.append(item)
def dequeue(self):
if not self.is_empty():
# pop() 移除并返回队首元素
return self.items.popleft()
else:
raise IndexError('dequeue from empty queue')
def size(self):
return len(self.items)
queue = Queue()
queue.enqueue(1)
queue.enqueue(2)
queue.enqueue(3)
print(queue.is_empty())
print(queue.dequeue())
print(queue.size())
执行结果:
1
[1, 10, 4, 5, 6]
False
3
2
False
1
2