数据结构:数据结构是计算机科学中研究数据组织、管理和存储方式的一门重要领域。它关注的是如何以最有效地方式组织和存储数据,以便能够高效地访问和修改这些数据。
主要分为两类:
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(): 返回栈的大小。