数据结构:10个Python函数实现常用数据结构
在计算机科学中,数据结构是指存储和组织数据的方法。在Python中,我们可以利用函数来实现常用的数据结构。下面是10个Python函数实现常用数据结构的示例。
1. 列表(List)
列表是Python中最基本的数据结构之一,它可以存储任意类型的数据。使用Python内置函数list()可以创建一个列表。
示例:
myList = list()
2. 栈(Stack)
栈是一种线性数据结构,它遵循先进后出(LIFO)原则。我们可以使用Python内置列表(list)来实现栈。
示例:
class Stack:
def __init__(self):
self.stack = []
def push(self, data):
self.stack.append(data)
def pop(self):
if not self.is_empty():
return self.stack.pop()
else:
return None
def is_empty(self):
return len(self.stack) == 0
3. 队列(Queue)
队列也是一种线性数据结构,它遵循先进先出(FIFO)原则。我们可以使用Python内置列表(list)来实现队列。
示例:
class Queue:
def __init__(self):
self.queue = []
def enqueue(self, data):
self.queue.append(data)
def dequeue(self):
if not self.is_empty():
return self.queue.pop(0)
else:
return None
def is_empty(self):
return len(self.queue) == 0
4. 直接访问表(Dictionary)
直接访问表是一种非线性数据结构,它用键值对存储数据。使用Python内置函数dict()可以创建直接访问表。
示例:
myDict = dict()
5. 链表(Linked List)
链表是一种线性数据结构,它由节点组成,每个节点包含数据和指向下一个节点的指针。我们可以使用类来实现链表。
示例:
class Node:
def __init__(self, data):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
def add_node(self, data):
new_node = Node(data)
if self.head is None:
self.head = new_node
else:
current = self.head
while current.next is not None:
current = current.next
current.next = new_node
def remove_node(self, data):
if self.head is None:
return
if self.head.data == data:
self.head = self.head.next
else:
current = self.head
while current.next is not None:
if current.next.data == data:
current.next = current.next.next
return
current = current.next
6. 树(Tree)
树是一种非线性数据结构,它由节点和分支组成。父节点有多个子节点,每个子节点又可以作为父节点继续向下扩展。我们可以使用类来实现树。
示例:
class Node:
def __init__(self, data):
self.left = None
self.right = None
self.data = data
class BinaryTree:
def __init__(self):
self.root = None
def add_node(self, data):
new_node = Node(data)
if self.root is None:
self.root = new_node
else:
current = self.root
while True:
if data < current.data:
if current.left is None:
current.left = new_node
break
else:
current = current.left
else:
if current.right is None:
current.right = new_node
break
else:
current = current.right
7. 堆(Heap)
堆是一种非线性数据结构,它满足任意节点的父节点小于或等于子节点。我们可以使用Python内置模块heapq来实现堆。
示例:
import heapq
class MinHeap:
def __init__(self):
self.heap = []
def push(self, data):
heapq.heappush(self.heap, data)
def pop(self):
if not self.is_empty():
return heapq.heappop(self.heap)
else:
return None
def is_empty(self):
return len(self.heap) == 0
8. 图(Graph)
图是一种非线性数据结构,它由节点和边组成。我们可以使用类来实现图。
示例:
class Node:
def __init__(self, node_id):
self.id = node_id
self.edges = set()
def add_edge(self, node):
self.edges.add(node)
class Graph:
def __init__(self):
self.nodes = {}
def add_node(self, node_id):
self.nodes[node_id] = Node(node_id)
def add_edge(self, source_id, dest_id):
self.nodes[source_id].add_edge(dest_id)
self.nodes[dest_id].add_edge(source_id)
9. 字符串(String)
字符串是一种基本数据类型,在Python中,字符串是不可变对象。我们可以使用Python内置字符串操作来处理字符串。
示例:
my_string = 'Hello, World!' print(my_string[0]) # H print(my_string[-1]) # ! print(my_string[7:12]) # World print(len(my_string)) # 13
10. 集合(Set)
集合是一种非线性数据结构,它可以存储不重复的元素。使用Python内置函数set()可以创建一个集合。
示例:
mySet = set()
