数据结构复习(一)到循环队列
发布人:shili8
发布时间:2025-01-09 03:27
阅读次数:0
**数据结构复习(一)**
在计算机科学中,数据结构是指组织和存储数据的方式。它决定了我们如何访问、修改和操作数据。在本文中,我们将回顾一些基本的数据结构,包括线性表、栈、队列和循环队列。
**1. 线性表**
线性表是一种最简单的数据结构,它是由一组元素按照一定的顺序排列而成。每个元素都有一个唯一的索引或下标,可以通过该下标来访问。
线性表可以分为两类:静态线性表和动态线性表。
* 静态线性表:其大小固定,不可改变。
* 动态线性表:其大小可以根据需要进行调整。
线性表的基本操作包括:
* 插入:在指定位置插入一个新元素。
* 删除:删除指定位置的元素。
* 查找:查找指定位置的元素。
* 排序:对线性表中的所有元素进行排序。
**示例代码**
class LinearTable:
def __init__(self, size):
self.size = size self.data = [None] * size def insert(self, index, value):
if index < 0 or index >= self.size:
raise IndexError("Index out of range")
for i in range(self.size -1, index -1, -1):
self.data[i +1] = self.data[i]
self.data[index] = value def delete(self, index):
if index < 0 or index >= self.size:
raise IndexError("Index out of range")
for i in range(index, self.size -1):
self.data[i] = self.data[i +1]
def find(self, index):
if index < 0 or index >= self.size:
return None return self.data[index]
# 创建一个线性表,大小为10linear_table = LinearTable(10)
# 插入元素linear_table.insert(5, "Hello")
# 删除元素linear_table.delete(3)
# 查找元素print(linear_table.find(2)) # 输出: None**2. 栈**
栈是一种特殊的线性表,它遵循后进先出的原则。也就是说,最后添加的元素将最先被移除。
栈的基本操作包括:
* push:向栈顶添加一个新元素。
* pop:从栈顶移除一个元素。
* peek:查看栈顶的元素。
**示例代码**
class Stack:
def __init__(self, size):
self.size = size self.data = [None] * size def push(self, value):
for i in range(self.size -1,0, -1):
self.data[i] = self.data[i -1]
self.data[0] = value def pop(self):
return self.data.pop()
def peek(self):
return self.data[-1]
# 创建一个栈,大小为10stack = Stack(10)
# push元素stack.push("Hello")
# pop元素print(stack.pop()) # 输出: Hello# peek元素print(stack.peek()) # 输出: None**3. 队列**
队列是一种特殊的线性表,它遵循先进先出的原则。也就是说,第一个添加的元素将最先被移除。
队列的基本操作包括:
* enqueue:向队尾添加一个新元素。
* dequeue:从队头移除一个元素。
* peek:查看队头的元素。
**示例代码**
class Queue:
def __init__(self, size):
self.size = size self.data = [None] * size def enqueue(self, value):
for i in range(self.size -1,0, -1):
self.data[i] = self.data[i -1]
self.data[0] = value def dequeue(self):
return self.data.pop()
def peek(self):
return self.data[-1]
# 创建一个队列,大小为10queue = Queue(10)
# enqueue元素queue.enqueue("Hello")
# dequeue元素print(queue.dequeue()) # 输出: Hello# peek元素print(queue.peek()) # 输出: None**4. 循环队列**
循环队列是一种特殊的队列,它在队尾添加新元素时,会将老元素覆盖掉,而不是追加到队尾。
循环队列的基本操作包括:
* enqueue:向队尾添加一个新元素。
* dequeue:从队头移除一个元素。
* peek:查看队头的元素。
**示例代码**
class CircularQueue:
def __init__(self, size):
self.size = size self.data = [None] * size self.front =0 self.rear =0 def enqueue(self, value):
if (self.rear +1) % self.size == self.front:
raise IndexError("Queue is full")
self.data[self.rear] = value self.rear = (self.rear +1) % self.size def dequeue(self):
if self.front == self.rear:
raise IndexError("Queue is empty")
value = self.data[self.front]
self.data[self.front] = None self.front = (self.front +1) % self.size return value def peek(self):
if self.front == self.rear:
raise IndexError("Queue is empty")
return self.data[self.front]
# 创建一个循环队列,大小为10circular_queue = CircularQueue(10)
# enqueue元素circular_queue.enqueue("Hello")
# dequeue元素print(circular_queue.dequeue()) # 输出: Hello# peek元素print(circular_queue.peek()) # 输出: None以上就是本文关于线性表、栈、队列和循环队列的基本概念和操作。这些数据结构是计算机科学中非常重要的基础知识,广泛应用于各种算法和程序设计中。

