给定一组数:3818,29,182310.65问题一、利用栈操作,分别实现对上述数组的数据的入栈操作,出栈操作。要求写出初始化栈的方法,入栈操作的出栈操作的方法方法,问题二、利用队列操作,分别实现对上述数组的数据的入队列操作,出队列操作。要求写出初始化队列的方法,入队列操作的方法,出队列操作的方法。问题三、设计和实现一个基于最简单的节点的二叉排序树,要求:包含一个初始化树结构的方法,然后输入第一个数,建立第一个节点;之后输入第二个数,建立第二个节点,依次进行下去,当输入最后一个数65的时候,建立完成这棵树。每个父亲节点的左孩子都是比父亲节点小的节点,每个父亲节点的右子树都是比父亲节点大的数。问题四:利用任何一种排序算法,把上述数组进行从小到大的排序,排序完成后,生成新的数组,然后写一个折半查找方法,完成在上述队列中的折半查找功能。要能输入任何一个数,然后返回这个数在排序后的数组中的位置。代码
时间: 2023-02-09 15:58:42 浏览: 108
下面是用 Python 语言回答你的问题的代码:
问题一:
初始化栈的方法:
```
stack = []
```
入栈操作的方法:
```
def push(x):
stack.append(x)
```
出栈操作的方法:
```
def pop():
if not stack:
return None
else:
return stack.pop()
```
问题二:
初始化队列的方法:
```
queue = []
```
入队列操作的方法:
```
def enqueue(x):
queue.append(x)
```
出队列操作的方法:
```
def dequeue():
if not queue:
return None
else:
return queue.pop(0)
```
问题三:
初始化树结构的方法:
```
class Node:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
root = None
```
输入第一个数,建立第一个节点的方法:
```
root = Node(3818)
```
之后输入第二个数,建立第二个节点,依次进行下去的方法:
```
def insert(root, val):
if not root:
root = Node(val)
else:
if val < root.val:
root.left = insert(root.left, val)
else:
root.right = insert(root.right, val)
return root
```
问题四:
使用快速排序对上述数组进行从小到大的排序的方法:
```
def quick_sort(arr):
if len(arr) < 2:
return arr
else:
pivot = arr[0]
less = [x for x in arr[1:] if x <= pivot]
greater = [x for x in arr[1:] if x > pivot]
return quick_sort(less) + [pivot] + quick_sort(greater)
sorted_arr = quick_sort([3818, 29, 182310.65])
```
生
阅读全文