当前位置:实例文章 » JAVA Web实例» [文章]数据结构复习(一)到循环队列

数据结构复习(一)到循环队列

发布人: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


以上就是本文关于线性表、栈、队列和循环队列的基本概念和操作。这些数据结构是计算机科学中非常重要的基础知识,广泛应用于各种算法和程序设计中。

其他信息

其他资源

Top