当前位置:实例文章 » JAVA Web实例» [文章]刷题-DAY5

刷题-DAY5

发布人:shili8 发布时间:2024-12-31 02:17 阅读次数:0

**刷题-DAY5**

今天是我们刷题的第五天了,希望你已经对一些常见的算法和数据结构有了一定的了解。今天,我们将继续深入地探讨一下链表、栈和队列这三个基本数据结构。

### 链表链表是一种线性数据结构,它由一系列结点组成,每个结点包含一个值和一个指向下一个结点的引用。链表可以在任意位置插入或删除元素,而不需要移动其他元素。

#### 双向链表双向链表是链表的一种特殊形式,除了每个结点都有一个指向下一个结点的引用外,还有一个指向上一个结点的引用。这种结构可以在任意位置插入或删除元素,并且可以快速找到前驱和后继结点。

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


#### 单向链表单向链表是链表的一种特殊形式,每个结点只包含一个指向下一个结点的引用。这种结构可以在任意位置插入或删除元素,但需要移动其他元素。

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


### 栈栈是一种后进先出的数据结构,它遵循 LIFO(Last In First Out)原则。栈的基本操作是入栈和出栈。

#### 使用列表实现栈
class Stack:
 def __init__(self):
 self.items = []

 def push(self, item):
 self.items.append(item)

 def pop(self):
 if not self.is_empty():
 return self.items.pop()
 else:
 raise IndexError("Stack is empty")

 def peek(self):
 if not self.is_empty():
 return self.items[-1]
 else:
 raise IndexError("Stack is empty")

 def is_empty(self):
 return len(self.items) ==0


#### 使用链表实现栈
class Node:
 def __init__(self, value):
 self.value = value self.next = Noneclass Stack:
 def __init__(self):
 self.top = None def push(self, item):
 node = Node(item)
 if not self.top:
 self.top = node else:
 current = self.top while current.next:
 current = current.next current.next = node def pop(self):
 if self.top:
 value = self.top.value self.top = self.top.next return value else:
 raise IndexError("Stack is empty")

 def peek(self):
 if self.top:
 return self.top.value else:
 raise IndexError("Stack is empty")


### 队列队列是一种先进先出的数据结构,它遵循 FIFO(First In First Out)原则。队列的基本操作是入队和出队。

#### 使用列表实现队列
class Queue:
 def __init__(self):
 self.items = []

 def enqueue(self, item):
 self.items.append(item)

 def dequeue(self):
 if not self.is_empty():
 return self.items.pop(0)
 else:
 raise IndexError("Queue is empty")

 def peek(self):
 if not self.is_empty():
 return self.items[0]
 else:
 raise IndexError("Queue is empty")

 def is_empty(self):
 return len(self.items) ==0


#### 使用链表实现队列
class Node:
 def __init__(self, value):
 self.value = value 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 = node self.rear = node else:
 current = self.front while current.next:
 current = current.next current.next = node self.rear = node def dequeue(self):
 if self.front:
 value = self.front.value self.front = self.front.next if not self.front:
 self.rear = None return value else:
 raise IndexError("Queue is empty")

 def peek(self):
 if self.front:
 return self.front.value else:
 raise IndexError("Queue is empty")


以上就是今天的内容,希望你已经对链表、栈和队列这三个基本数据结构有了一定的了解。这些数据结构在实际应用中非常重要,例如缓存管理、任务调度等。

相关标签:算法java开发语言
其他信息

其他资源

Top