数据结构真题
发布人:shili8
发布时间:2024-12-29 15:56
阅读次数:0
**数据结构真题**
###1. 队列实现#### 题目描述设计一个队列类,支持 enqueue、dequeue 和 isEmpty 操作。队列中的元素类型为整数。
#### 实现代码
class Queue:
def __init__(self):
self.items = []
def enqueue(self, item):
"""向队列尾部添加元素"""
self.items.append(item)
def dequeue(self):
"""从队列头部移除元素"""
if not self.isEmpty():
return self.items.pop(0)
else:
raise IndexError("Queue is empty")
def isEmpty(self):
"""检查队列是否为空"""
return len(self.items) ==0# 示例使用q = Queue()
q.enqueue(1)
q.enqueue(2)
print(q.dequeue()) # 输出:1print(q.isEmpty()) # 输出: False###2. 栈实现#### 题目描述设计一个栈类,支持 push、pop 和 isEmpty 操作。栈中的元素类型为整数。
#### 实现代码
class Stack:
def __init__(self):
self.items = []
def push(self, item):
"""向栈顶部添加元素"""
self.items.append(item)
def pop(self):
"""从栈顶部移除元素"""
if not self.isEmpty():
return self.items.pop()
else:
raise IndexError("Stack is empty")
def isEmpty(self):
"""检查栈是否为空"""
return len(self.items) ==0# 示例使用s = Stack()
s.push(1)
s.push(2)
print(s.pop()) # 输出:2print(s.isEmpty()) # 输出: False###3. 链表实现#### 题目描述设计一个链表类,支持 insert、delete 和 isEmpty 操作。链表中的元素类型为整数。
#### 实现代码
class Node: def __init__(self, data=None): self.data = data self.next = Noneclass LinkedList: def __init__(self): self.head = None def insert(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 delete(self, data): """从链表中移除指定元素""" if self.head is None: return if self.head.data == data: self.head = self.head.next return current = self.head while current.next: if current.next.data == data: current.next = current.next.next return current = current.next def isEmpty(self): """检查链表是否为空""" return self.head is None# 示例使用ll = LinkedList() ll.insert(1) ll.insert(2) print(ll.isEmpty()) # 输出: Falsell.delete(1) print(ll.isEmpty()) # 输出: False
###4. 哈希表实现#### 题目描述设计一个哈希表类,支持 put、get 和 isEmpty 操作。哈希表中的元素类型为整数。
#### 实现代码
class HashTable:
def __init__(self, size=10):
self.size = size self.table = [[] for _ in range(size)]
def put(self, key, value):
"""向哈希表中添加或更新元素"""
index = hash(key) % self.size for i, (k, v) in enumerate(self.table[index]):
if k == key:
self.table[index][i] = (key, value)
return self.table[index].append((key, value))
def get(self, key):
"""从哈希表中获取元素"""
index = hash(key) % self.size for k, v in self.table[index]:
if k == key:
return v raise KeyError("Key not found")
def isEmpty(self):
"""检查哈希表是否为空"""
return all(not bucket for bucket in self.table)
# 示例使用ht = HashTable()
ht.put(1, "one")
print(ht.get(1)) # 输出: oneprint(ht.isEmpty()) # 输出: False###5. Trie树实现#### 题目描述设计一个Trie树类,支持 insert、search 和 startsWith 操作。Trie树中的元素类型为整数。
#### 实现代码
class TrieNode:
def __init__(self):
self.children = {}
self.isEndOfWord = Falseclass Trie:
def __init__(self):
self.root = TrieNode()
def insert(self, word):
"""向Trie树中添加元素"""
node = self.root for char in word:
if char not in node.children:
node.children[char] = TrieNode()
node = node.children[char]
node.isEndOfWord = True def search(self, word):
"""从Trie树中获取元素"""
node = self.root for char in word:
if char not in node.children:
return False node = node.children[char]
return node.isEndOfWord def startsWith(self, prefix):
"""检查Trie树是否包含指定前缀"""
node = self.root for char in prefix:
if char not in node.children:
return False node = node.children[char]
return True# 示例使用trie = Trie()
trie.insert("apple")
print(trie.search("apple")) # 输出: Trueprint(trie.startsWith("app")) # 输出: True以上是五个数据结构真题的实现代码和示例使用。每个真题都有一个具体的描述和实现代码,包括注释和示例使用。

