当前位置:实例文章 » 其他实例» [文章]7-25作业

7-25作业

发布人:shili8 发布时间:2025-03-04 12:04 阅读次数:0

**第7 周至第25 周作业**

**题目描述**

在本周的作业中,我们将学习如何使用 Python 来实现一些常见的数据结构和算法。我们将重点讨论以下几个方面:

1. **栈和队列**: 我们将学习如何使用 Python 来实现栈和队列这两个基本的线性表。
2. **链表**: 我们将学习如何使用 Python 来实现链表,这是一个非常重要的数据结构。
3. **二叉树**: 我们将学习如何使用 Python 来实现二叉树,这是一个非常重要的非线性表。
4. **图**: 我们将学习如何使用 Python 来实现图,这是一个非常重要的非线性表。

**栈和队列**

###1. 栈栈是一种后进先出的数据结构。它遵循 LIFO(Last In First Out)原则,即最后添加的元素最先被移除。

#### 实现栈的 Python代码

class Stack:
 def __init__(self):
 self.items = []

 def push(self, item):
 # 将 item 添加到栈顶 self.items.append(item)

 def pop(self):
 # 移除栈顶元素并返回 if not self.is_empty():
 return self.items.pop()
 else:
 raise IndexError("Stack is empty")

 def peek(self):
 # 返回栈顶元素但不移除 if not self.is_empty():
 return self.items[-1]
 else:
 raise IndexError("Stack is empty")

 def is_empty(self):
 # 检查栈是否为空 return len(self.items) ==0# 示例使用stack = Stack()
stack.push(1)
stack.push(2)
print(stack.pop()) # 输出:2print(stack.peek()) # 输出:1

###2. 队列队列是一种先进先出的数据结构。它遵循 FIFO(First In First Out)原则,即最先添加的元素最先被移除。

#### 实现队列的 Python代码
class Queue:
 def __init__(self):
 self.items = []

 def enqueue(self, item):
 # 将 item 添加到队尾 self.items.append(item)

 def dequeue(self):
 # 移除队首元素并返回 if not self.is_empty():
 return self.items.pop(0)
 else:
 raise IndexError("Queue is empty")

 def peek(self):
 # 返回队首元素但不移除 if not self.is_empty():
 return self.items[0]
 else:
 raise IndexError("Queue is empty")

 def is_empty(self):
 # 检查队列是否为空 return len(self.items) ==0# 示例使用queue = Queue()
queue.enqueue(1)
queue.enqueue(2)
print(queue.dequeue()) # 输出:1print(queue.peek()) # 输出:2

**链表**

链表是一种线性表,它的元素通过指针连接。

#### 实现链表的 Python代码
class Node:
 def __init__(self, data=None):
 self.data = data self.next = Noneclass LinkedList:
 def __init__(self):
 self.head = None def append(self, data):
 # 将数据添加到链表尾部 if not self.head:
 self.head = Node(data)
 else:
 current = self.head while current.next:
 current = current.next current.next = Node(data)

 def traverse(self):
 # 遍历链表并输出元素 current = self.head while current:
 print(current.data, end=" ")
 current = current.next# 示例使用linked_list = LinkedList()
linked_list.append(1)
linked_list.append(2)
linked_list.append(3)
linked_list.traverse() # 输出:123

**二叉树**

二叉树是一种非线性表,它的元素通过指针连接。

#### 实现二叉树的 Python代码
class Node:
 def __init__(self, data=None):
 self.data = data self.left = None self.right = Noneclass BinaryTree:
 def __init__(self):
 self.root = None def insert(self, data):
 # 将数据添加到二叉树中 if not self.root:
 self.root = Node(data)
 else:
 current = self.root while True:
 if data < current.data:
 if not current.left:
 current.left = Node(data)
 break current = current.left else:
 if not current.right:
 current.right = Node(data)
 break current = current.right def traverse(self):
 # 遍历二叉树并输出元素 self._traverse(self.root)

 def _traverse(self, node):
 if node:
 print(node.data, end=" ")
 self._traverse(node.left)
 self._traverse(node.right)

# 示例使用binary_tree = BinaryTree()
binary_tree.insert(5)
binary_tree.insert(3)
binary_tree.insert(7)
binary_tree.traverse() # 输出:537

**图**

图是一种非线性表,它的元素通过指针连接。

#### 实现图的 Python代码
class Node:
 def __init__(self, data=None):
 self.data = data self.edges = []

class Graph:
 def __init__(self):
 self.nodes = {}

 def add_node(self, data):
 # 将数据添加到图中 if not data in self.nodes:
 self.nodes[data] = Node(data)

 def add_edge(self, from_data, to_data):
 # 将两个节点连接起来 if from_data in self.nodes and to_data in self.nodes:
 self.nodes[from_data].edges.append(to_data)
 self.nodes[to_data].edges.append(from_data)

 def traverse(self):
 # 遍历图并输出元素 for node in self.nodes.values():
 print(node.data, end=" ")
 for edge in node.edges:
 print(edge, end=" ")
 print()

# 示例使用graph = Graph()
graph.add_node(1)
graph.add_node(2)
graph.add_node(3)
graph.add_edge(1,2)
graph.add_edge(2,3)
graph.traverse() # 输出:123231

以上就是本周的作业内容。希望你能够完成这些任务,并且对数据结构和算法有一个更深入的理解。

相关标签:前端
其他信息

其他资源

Top