数据结构习题及标准答案
一、栈和队列
1. 栈(Stack)是一种后进先出(Last-In-First-Out,LIFO)的数据结构。栈的简单实现可以使用数组或链表,下面是一个使用数组实现的栈的示例代码:
```python
class Stack:
    def __init__(self):
        self.stack = []
    def is_empty(self):
        return len(self.stack) == 0
    def push(self, item):
        self.stack.append(item)
    def pop(self):
        if self.is_empty():
            return None
        return self.stack.pop()
    def peek(self):
        if self.is_empty():
            return None
        return self.stack[-1]
```
2. 队列(Queue)是一种先进先出(First-In-First-Out,FIFO)的数据结构。队列的简单实现也可以使用数组或链表,下面是一个使用链表实现的队列的示例代码:
```python
class Queue:
    def __init__(self):
        self.queue = []
    def is_empty(self):
        return len(self.queue) == 0
    def enqueue(self, item):
        self.queue.append(item)
    def dequeue(self):
        if self.is_empty():
            return None
        return self.queue.pop(0)
    def peek(self):
        if self.is_empty():
            return None
        return self.queue[0]
```
二、链表
1. 链表(Linked List)是一种常见的线性数据结构。链表由节点组成,每个节点包含数据和指向下一个节点的指针。下面是一个简单的单向链表的实现示例:
```python
class Node:
    def __init__(self, data):
        self.data = data
        = None
class LinkedList:
    def __init__(self):
        self.head = None
    def is_empty(self):
        return self.head is None
    def append(self, data):
        new_node = Node(data)
        if self.is_empty():
            self.head = new_node
        else:
            curr_node = self.head
            while is not None:
                curr_node =
            = new_node
    def print_list(self):
        curr_node = self.head
        while curr_node is not None:
            print(curr_node.data, end=" ")
            curr_node =
        print()
```
三、二叉树
1. 二叉树(Binary Tree)是一种常见的树形数据结构。每个节点最多有两个子节点,分别称为左子节点和右子节点。下面是一个二叉树的简单实现示例:
```python
class TreeNode:
    def __init__(self, data):
数组和链表        self.data = data
        self.left = None
        self.right = None
class BinaryTree:
    def __init__(self, root):
        = TreeNode(root)
    def preorder_traversal(self, node):
        if node is not None:
            print(node.data, end=" ")
            self.preorder_traversal(node.left)
            self.preorder_traversal(node.right)
    def inorder_traversal(self, node):
        if node is not None:
            self.inorder_traversal(node.left)
            print(node.data, end=" ")
            self.inorder_traversal(node.right)
    def postorder_traversal(self, node):

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。