Apikit 自学日记:数据结构
发布人:shili8
发布时间:2024-04-20 11:32
阅读次数:37
Apikit 自学日记:数据结构作为一名开发者,数据结构是我们必须掌握的基础知识之一。在学习数据结构的过程中,我选择了使用 Apikit 这个开源工具来帮助我更好地理解和应用数据结构。
Day1: Introduction to Data Structures在开始学习数据结构之前,我首先了解了数据结构的基本概念和分类。数据结构是指在计算机中组织和存储数据的方式,常见的数据结构包括数组、链表、栈、队列、树等。每种数据结构都有其特定的应用场景和操作方式。
Day2: Arrays and Linked Lists我开始学习数组和链表这两种最基本的数据结构。数组是一种线性结构,可以存储相同类型的数据,而链表则是一种非线性结构,通过指针将数据节点连接起来。我使用 Apikit 提供的示例代码来实现数组和链表的基本操作,如插入、删除、查找等。
# Define a Node class for linked listclass Node: def __init__(self, data): self.data = data self.next = None# Define a LinkedList classclass LinkedList: def __init__(self): self.head = None def insert(self, data): new_node = Node(data) if self.head is None: self.head = new_node else: current = self.head while current.next: current = current.next current.next = new_node def display(self): current = self.head while current: print(current.data) current = current.next# Create a linked list and insert some datall = LinkedList() ll.insert(1) ll.insert(2) ll.insert(3) # Display the linked listll.display()
Day3: Stacks and Queues接着我学习了栈和队列这两种常用的数据结构。栈是一种后进先出(LIFO)的数据结构,而队列是一种先进先出(FIFO)的数据结构。我使用 Apikit 提供的示例代码来实现栈和队列的基本操作,如入栈、出栈、入队、出队等。
# Define a Stack classclass Stack: def __init__(self): self.items = [] def push(self, data): self.items.append(data) def pop(self): if not self.is_empty(): return self.items.pop() def is_empty(self): return len(self.items) ==0# Create a stack and push some datastack = Stack() stack.push(1) stack.push(2) stack.push(3) # Pop data from the stackprint(stack.pop()) print(stack.pop()) # Define a Queue classclass Queue: def __init__(self): self.items = [] def enqueue(self, data): self.items.append(data) def dequeue(self): if not self.is_empty(): return self.items.pop(0) def is_empty(self): return len(self.items) ==0# Create a queue and enqueue some dataqueue = Queue() queue.enqueue(1) queue.enqueue(2) queue.enqueue(3) # Dequeue data from the queueprint(queue.dequeue()) print(queue.dequeue())
Day4: Trees and Graphs最后,我学习了树和图这两种更复杂的数据结构。树是一种非线性结构,由节点和边组成,常见的树结构包括二叉树、二叉搜索树等。而图是一种更为复杂的数据结构,由节点和边组成,可以表示各种实际问题中的关系。我使用 Apikit 提供的示例代码来实现树和图的基本操作,如遍历、搜索、插入等。
# Define a Node class for binary treeclass Node: def __init__(self, data): self.data = data self.left = None self.right = None# Define a BinaryTree classclass BinaryTree: def __init__(self): self.root = None def insert(self, data): if self.root is None: self.root = Node(data) else: self._insert(self.root, data) def _insert(self, node, data): if data < node.data: if node.left is None: node.left = Node(data) else: self._insert(node.left, data) else: if node.right is None: node.right = Node(data) else: self._insert(node.right, data) # Create a binary tree and insert some databt = BinaryTree() bt.insert(5) bt.insert(3) bt.insert(7) # Define a Graph classclass Graph: def __init__(self): self.nodes = {} def add_node(self, node): self.nodes[node] = [] def add_edge(self, node1, node2): self.nodes[node1].append(node2) self.nodes[node2].append(node1) # Create a graph and add some nodes and edgesgraph = Graph() graph.add_node(1) graph.add_node(2) graph.add_edge(1,2)
通过使用 Apikit 这个开源工具,我更加深入地理解了数据结构的概念和应用。我将继续学习和实践数据结构,以提升自己的编程能力和解决问题的能力。希望我的学习日记可以帮助更多的开发者更好地掌握数据结构这一重要知识。