1.编写一个程序实现顺序队列的各种基本操作,并在此基础之上设计一个主程序,完成如下功能:初始化、入队、出队、取对头等操作。 2.BF算法,输入字符串S,字符串T,匹配T在S中的位置。
时间: 2024-11-09 21:23:43 浏览: 15
C++编写模拟进程调度程序:优先数调度算法程序和循环轮转调度算法程序.zip
5星 · 资源好评率100%
1. 要编写一个顺序队列的基本操作程序,首先需要创建一个队列的数据结构,通常可以使用数组或链表来实现。这里以数组为例:
```python
class Queue:
def __init__(self, capacity=10):
self.queue = [None] * capacity
self.head = 0
self.tail = -1
# 入队(enqueue)
def enqueue(self, item):
if self.is_full():
print("Queue is full!")
return
self.tail += 1
if self.tail == len(self.queue) - 1:
self.resize()
self.queue[self.tail] = item
# 出队(dequeue)
def dequeue(self):
if self.is_empty():
print("Queue is empty!")
return None
item = self.queue[self.head]
self.head += 1
if self.head == len(self.queue) // 2 and self.tail < len(self.queue) - 1:
self.resize()
return item
# 取队头(peek)
def peek(self):
if self.is_empty():
return None
return self.queue[self.head]
# 判断队列是否为空
def is_empty(self):
return self.head > self.tail
# 判断队列是否满
def is_full(self):
return (self.tail + 1) % len(self.queue) == self.head
# 队列扩容
def resize(self):
new_queue = [None] * (2 * self.capacity)
for i in range(self.head, self.tail + 1):
new_queue[i] = self.queue[i]
self.queue = new_queue
```
然后你可以创建一个主函数来进行各种操作:
```python
def main():
my_queue = Queue()
# 初始化
init_operation = input("Enter 'init': ")
if init_operation.lower() == 'init':
size = int(input("Enter queue capacity: "))
my_queue = Queue(size)
# 其他操作
while True:
operation = input("Enter 'enqueue', 'dequeue', 'peek', or 'exit': ")
if operation.lower() == 'enqueue':
item = input("Enter the item to enqueue: ")
my_queue.enqueue(item)
elif operation.lower() == 'dequeue':
dequeued_item = my_queue.dequeue()
if dequeued_item is not None:
print(f"Dequeued item: {dequeued_item}")
elif operation.lower() == 'peek':
print("Peeked item:", my_queue.peek())
elif operation.lower() == 'exit':
break
else:
print("Invalid operation!")
if __name__ == "__main__":
main()
```
阅读全文