数据结构(python)之小杨笔记一

数据结构:数据结构是计算机科学中研究数据组织、管理和存储方式的一门重要领域。它关注的是如何以最有效地方式组织和存储数据,以便能够高效地访问和修改这些数据。

主要分为两类:

1.基本数据结构

(1.)数组:一组连续储存的相同类型的数据元素。

(2.)链表:由一系列节点组成的数据结构,每个结构包含数据和指向下一个节点的指针。

(3.)栈:一种先进后出的数据结构,只能在栈顶进行插入和删除操作。

(4.)队列:一种先进先出的数据结构,只能在队列的前端进行删除操作,在队列的后端进行插入操作。

(5.)树:一种非线性的数据结构,由节点和边组成,每个节点最多有一个夫节点和多个子节点

(6.)图:一种包含节点和边的数据结构,用于表示对象之间的关系。

2.高级数据结构

(1.)堆:一种特殊的树形数据结构,用于实现优先队列

(2.)哈希表:一种通过哈希函数将关键字映射到储存位置的数据结构,用于快速查找。

(3.)图的算法:用于解决图结构中的各种问题的算法,如最短路径,最小生成树。

那么我们来看看这些在python里面是怎么存放和输出的吧

one(数组):

#创建一个包含学生成绩的数组
grades = [85,90,75,95,80]

#访问数组中的元素
print("第一个学生的成绩是:", grades[0])#输出:85

#修改数组中的元素
grades[2] = 70
print("修改后的成绩数组:", grades)#输出:[85,90,70,95,80]

#添加新的成绩
grades.append(88)
print("添加新成绩后的数组:", grades)#输出:[85,90,70,95,80,88]

#删除数组中的元素
removed_grade = grades.pop(3)
print("删除的成绩是:", removed_grade)#输出:95
print("删除后的数组:", grades)#输出:[85,90,70,80,88]

#获取数组的长度
print("数组的长度是:", len(grades))#输出:5

two(链表):

#定义链表节点类
class Node:
    def __init__(self, data):
        self.data = data  #节点的数据
        self.next = None  #指向下一个节点的指针

#定义链表类
class LinkedList:
    def __init__(self):
        self.head = None  #链表的头节点

    #在链表尾部添加新节点
    def append(self, data):
        new_node = Node(data)
        if not self.head:
            self.head = new_node
            return
        last_node = self.head
        while last_node.next:
            last_node = last_node.next
        last_node.next = new_node

    #打印链表元素
    def print_list(self):
        current_node = self.head
        while current_node:
            print(current_node.data, end=" ")
            current_node = current_node.next
        print()

#创建一个链表实例
my_list = LinkedList()

#向链表中添加元素
my_list.append(1)
my_list.append(2)
my_list.append(3)
my_list.append(4)

#打印链表元素
print("链表元素:")
my_list.print_list()

 

three(栈):

class Stack:
    def __init__(self):
        self.items = []  #使用列表作为栈的内部存储

    #判断栈是否为空
    def is_empty(self):
        return len(self.items) == 0

    #入栈操作
    def push(self, item):
        self.items.append(item)

    #出栈操作
    def pop(self):
        if not self.is_empty():
            return self.items.pop()
        else:
            print("栈已空")
            return None

    #返回栈顶元素但不移除
    def peek(self):
        if not self.is_empty():
            return self.items[-1]
        else:
            print("栈已空")
            return None

    #返回栈的大小
    def size(self):
        return len(self.items)

#创建一个栈实例
stack = Stack()

#入栈操作
stack.push(1)
stack.push(2)
stack.push(3)

#打印栈的大小
print("栈的大小:", stack.size())

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

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

#打印栈是否为空
print("栈是否为空:", stack.is_empty())

其中栈使用了几个方法:

is_empty(): 判断栈是否为空。

push(item): 将元素压入栈顶。

pop(): 弹出栈顶元素并返回。

peek(): 返回栈顶元素但不移除。

size(): 返回栈的大小。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值