当前位置:实例文章 » 其他实例» [文章]《数据结构》栈,队列,双向链表

《数据结构》栈,队列,双向链表

发布人:shili8 发布时间:2025-01-18 20:25 阅读次数:0

**数据结构**

在计算机科学中,数据结构是指组织和存储数据的方式。它定义了如何操作和访问数据,以实现特定的功能或算法。在本文中,我们将讨论栈、队列和双向链表这三个基本的线性数据结构。

### 栈**栈(Stack)**

栈是一种后进先出的线性数据结构。它遵循以下规则:

* **入栈(Push):** 将元素添加到栈顶。
* **出栈(Pop):** 移除栈顶的元素。
* **查看栈顶元素(Top):** 查看当前栈顶的元素。

#### 栈的实现我们可以使用一个数组来实现栈。下面是Python代码示例:

class Stack:
 def __init__(self, max_size):
 self.max_size = max_size self.stack = [None] * max_size self.top = -1 def push(self, item):
 if self.top < self.max_size -1:
 self.top +=1 self.stack[self.top] = item else:
 print("Stack is full.")

 def pop(self):
 if self.top >=0:
 item = self.stack[self.top]
 self.stack[self.top] = None self.top -=1 return item else:
 print("Stack is empty.")
 return None def top_element(self):
 if self.top >=0:
 return self.stack[self.top]
 else:
 print("Stack is empty.")
 return None# 测试栈的实现stack = Stack(5)
print(stack.push(1)) # Trueprint(stack.push(2)) # Trueprint(stack.pop()) #2print(stack.top_element()) #1


### 队列**队列(Queue)**

队列是一种先进先出的线性数据结构。它遵循以下规则:

* **入队(Enqueue):** 将元素添加到队尾。
* **出队(Dequeue):** 移除队头的元素。

#### 队列的实现我们可以使用一个链表来实现队列。下面是Python代码示例:

class Node:
 def __init__(self, data):
 self.data = data self.next = Noneclass Queue:
 def __init__(self):
 self.front = None self.rear = None def enqueue(self, item):
 node = Node(item)
 if not self.front:
 self.front = self.rear = node else:
 self.rear.next = node self.rear = node def dequeue(self):
 if self.front:
 temp = self.front.data self.front = self.front.next if not self.front:
 self.rear = None return temp else:
 print("Queue is empty.")
 return None# 测试队列的实现queue = Queue()
print(queue.enqueue(1)) # Trueprint(queue.enqueue(2)) # Trueprint(queue.dequeue()) #1print(queue.dequeue()) #2


### 双向链表**双向链表(Doubly Linked List)**

双向链表是一种线性数据结构,每个节点都有两个指针,分别指向前一个和后一个节点。

#### 双向链表的实现我们可以使用一个类来实现双向链表。下面是Python代码示例:

class Node:
 def __init__(self, data):
 self.data = data self.prev = None self.next = Noneclass DoublyLinkedList:
 def __init__(self):
 self.head = None def append(self, item):
 node = Node(item)
 if not self.head:
 self.head = node else:
 current = self.head while current.next:
 current = current.next current.next = node node.prev = current def print_list(self):
 current = self.head while current:
 print(current.data, end=" ")
 current = current.next print()


# 测试双向链表的实现dll = DoublyLinkedList()
dll.append(1)
dll.append(2)
dll.append(3)
dll.print_list() #123


在本文中,我们讨论了栈、队列和双向链表这三个基本的线性数据结构。我们通过提供Python代码示例来展示了这些数据结构的实现,并且使用注释来解释每个部分的功能。

相关标签:算法数据结构
其他信息

其他资源

Top