Python实现数据结构(如:链表、栈、队列等)。

简介: Python实现数据结构(如:链表、栈、队列等)。

好的,以下是使用 Python 实现一些常见数据结构的示例代码:

  1. 链表:
    ```python
    class Node:
    def init(self, data=None):
     self.data = data
     self.next = None
    

class LinkedList:
def init(self):
self.head = None

def append(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 print_list(self):
    elements = []
    current = self.head
    while current:
        elements.append(current.data)
        current = current.next
    print(elements)

创建链表对象

linked_list = LinkedList()

向链表中添加元素

linked_list.append(10)
linked_list.append(20)
linked_list.append(30)

打印链表中的元素

linked_list.print_list()

在上述示例中,定义了一个`Node`类来表示链表中的节点,每个节点包含数据和指向下一个节点的指针。然后,定义了一个`LinkedList`类来管理链表。`append`方法用于向链表中添加元素,`print_list`方法用于打印链表中的元素。
2. 栈:
```python
class Stack:
    def __init__(self):
        self.stack = []

    def is_empty(self):
        return len(self.stack) == 0

    def push(self, element):
        self.stack.append(element)

    def pop(self):
        if not self.is_empty():
            return self.stack.pop()
        else:
            print("栈已空,无法弹出元素")

    def peek(self):
        if not self.is_empty():
            return self.stack[-1]
        else:
            print("栈为空,无法查看顶部元素")

# 创建栈对象
stack = Stack()

# 入栈操作
stack.push(5)
stack.push(6)
stack.push(7)

# 打印栈顶元素
print("栈顶元素:", stack.peek())

# 出栈操作
popped_element = stack.pop()
print("弹出的元素:", popped_element)

# 检查栈是否为空
if stack.is_empty():
    print("栈为空")
else:
    print("栈不为空")

在这个示例中,定义了一个Stack类来表示栈数据结构。is_empty方法用于检查栈是否为空,push方法用于入栈操作,pop方法用于出栈操作,peek方法用于查看栈顶元素。

  1. 队列:
    ```python
    class Queue:
    def init(self):

     self.queue = []
    

    def is_empty(self):

     return len(self.queue) == 0
    

    def enqueue(self, element):

     self.queue.append(element)
    

    def dequeue(self):

     if not self.is_empty():
         return self.queue.pop(0)
     else:
         print("队列为空,无法出队")
    

    def peek(self):

     if not self.is_empty():
         return self.queue[0]
     else:
         print("队列为空,无法查看头部元素")
    

创建队列对象

queue = Queue()

入队操作

queue.enqueue(5)
queue.enqueue(6)
queue.enqueue(7)

打印队头元素

print("队头元素:", queue.peek())

出队操作

dequeued_element = queue.dequeue()
print("出队的元素:", dequeued_element)

检查队列是否为空

if queue.is_empty():
print("队列空")
else:
print("队列不为空")
`` 在这个示例中,定义了一个Queue类来表示队列数据结构。is_empty方法用于检查队列是否为空,enqueue方法用于入队操作,dequeue方法用于出队操作,peek`方法用于查看队头元素。
这些示例只是简单地实现了这些数据结构的基本操作,实际应用中可能需要根据具体需求进行更多的功能扩展和错误处理。希望这些示例对你有所帮助,如果你还有其他问题或需要进一步的解释,请随时提问😄

相关文章
|
9月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
746 0
|
存储 Python
Python 实现单向链表,和单向链表的反转
链表是一种数据结构,每个节点存储相邻节点的位置信息。单链表中的节点仅存储下一节点的位置。通过Python实现单链表,定义`ListNode`类并关联节点可创建链表。例如,创建A->B->C的链表后,可通过反转函数`reverse`将链表反转为CBA。代码展示了如何实现和操作单链表。
387 6
Python 实现单向链表,和单向链表的反转
|
存储 Python
Python 中链表的个人理解
简介:本文介绍了Python中链表的基本组成及其操作实现。链表由`head`(头节点)、中间节点和`tail`(尾节点)三部分构成,每个节点通过`Node`类定义,包含`value`(值域)和`next`(指针域)。示例代码展示了链表的增删查功能,包括`add`(头部插入)、`append`(尾部插入)、`remove`(删除节点)、`search`(查找节点)及遍历方法。运行结果验证了链表操作的正确性。
|
存储 机器学习/深度学习 算法
C 408—《数据结构》算法题基础篇—链表(下)
408考研——《数据结构》算法题基础篇之链表(下)。
636 30
|
存储 人工智能 索引
Python数据结构:列表、元组、字典、集合
Python 中的列表、元组、字典和集合是常用数据结构。列表(List)是有序可变集合,支持增删改查操作;元组(Tuple)与列表类似但不可变,适合存储固定数据;字典(Dictionary)以键值对形式存储,无序可变,便于快速查找和修改;集合(Set)为无序不重复集合,支持高效集合运算如并集、交集等。根据需求选择合适的数据结构,可提升代码效率与可读性。
1196 1
|
存储 算法 C语言
C 408—《数据结构》算法题基础篇—链表(上)
408考研——《数据结构》算法题基础篇之链表(上)。
922 25
|
存储 算法 搜索推荐
Python 实现反转、合并链表有啥用?
大家好,我是V哥。本文介绍Python实现反转链表和合并链表的应用场景及代码实现。反转链表适用于时间序列数据展示、回文链表判断等;合并链表则用于大规模数据排序、数据库查询结果集合并等。通过迭代和递归方法实现反转链表,以及合并两个或多个有序链表的算法,帮助开发者解决实际问题。关注V哥,了解更多实用编程技巧。 先赞再看后评论,腰缠万贯财进门。
355 0
|
存储 SQL 算法
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
|
存储 SQL 算法
LeetCode 题目 86:分隔链表
LeetCode 题目 86:分隔链表

推荐镜像

更多