第一个图没有PPT内容。
第二张图,基于 Python 语言的代码如下:
# 定义节点类
class Node:
def __init__(self, node_id, location, node_type):
self.node_id = node_id # 节点 ID,范围为 1-10
self.location = location # 节点位置,字符串类型,如 "位置1"
self.node_type = node_type # 节点类型,字符串类型,选项为 "交换机", "路由器", "服务器", "计算机"
self.next = None # 指向下一个节点的指针,默认为 None
# 定义链表类
class LinkedList:
def __init__(self):
self.head = None # 头节点,默认为 None
# 添加节点到链表尾部
def add_node(self, node):
if self.head is None: # 头节点为空时,直接将该节点设为头节点
self.head = node
else:
current = self.head
while current.next is not None: # 找到链表的最后一个节点
current = current.next
current.next = node # 将该节点添加到最后一个节点的 next 属性上
# 删除指定节点
def remove_node(self, node):
if self.head == node: # 如果要删除的节点是头节点,则将头节点指向第二个节点
self.head = self.head.next
return
current = self.head
while current is not None and current.next != node: # 找到要删除节点的前一个节点
current = current.next
if current is None: # 如果链表中没有找到该节点,则返回
return
current.next = current.next.next # 将前一个节点的 next 指针指向要删除节点的下一个节点
# 在指定位置插入新节点
def insert_node(self, new_node, pos):
if pos == 0: # 插入位置为 0,直接将新节点作为头节点
new_node.next = self.head
self.head = new_node
return
current_pos = 0
current_node = self.head
while current_node is not None and current_pos != pos - 1: # 找到要插入位置的前一个节点
current_node = current_node.next
current_pos += 1
if current_node is None: # 如果链表中没有找到指定位置的节点,则返回
return
new_node.next = current_node.next # 将新节点的 next 指针指向当前节点的 next 指针,即将其插入在当前节点之后
current_node.next = new_node # 将当前节点的 next 指针指向新节点,使其成为当前节点的下一个节点
# 显示所有节点信息
def display_nodes(self):
node_list = []
current = self.head
while current is not None:
node_list.append((current.node_id, current.location, current.node_type))
current = current.next
print(node_list)
# 初始化链表
ll = LinkedList()
# 添加10个节点
node1 = Node(1, "位置1", "交换机")
node2 = Node(2, "位置2", "路由器")
node3 = Node(3, "位置3", "服务器")
node4 = Node(4, "位置4", "计算机")
node5 = Node(5, "位置5", "交换机")
node6 = Node(6, "位置6", "路由器")
node7 = Node(7, "位置7", "服务器")
node8 = Node(8, "位置8", "计算机")
node9 = Node(9, "位置9", "交换机")
node10 = Node(10, "位置10", "路由器")
# 添加到链表中
ll.add_node(node1)
ll.add_node(node2)
ll.add_node(node3)
ll.add_node(node4)
ll.add_node(node5)
ll.add_node(node6)
ll.add_node(node7)
ll.add_node(node8)
ll.add_node(node9)
ll.add_node(node10)
# 显示所有节点信息
ll.display_nodes()
# 删除第五个节点
ll.remove_node(node5)
# 显示剩余的节点信息
ll.display_nodes()
# 插入第五个节点
new_node = Node(5, "九教北402外", "计算机")
ll.insert_node(new_node, 4)
# 显示所有的节点信息
ll.display_nodes()
# 在链首插入一个节点
new_node = Node(0, "九教西209", "服务器")
ll.insert_node(new_node, 0)
# 显示所有的节点信息
ll.display_nodes()
# 在链尾插入一个节点
new_node = Node(11, "逸夫312", "路由器")
ll.add_node(new_node)
# 显示所有的节点信息
ll.display_nodes()
以下答案由GPT-4.5Plus大模型(语音)与博主A努力中.......共同编写:
这里给出两个编程题的设计思路和Java代码:
题1:输入两个正整数m和n,求其最大公约数和最小公倍数。
思路:
代码:
java
public int gcd(int m, int n) {
if (m % n == 0) return n;
return gcd(n, m % n);
}
public int lcm(int m, int n) {
int gcd = gcd(m, n);
return m * n / gcd;
}
public static void main(String[] args) {
int m = 12, n = 8;
int gcd = gcd(m, n); // 4
int lcm = lcm(m, n); // 24
System.out.println("最大公约数:" + gcd);
System.out.println("最小公倍数:" + lcm);
}
题2:输出100~999之间的所有对称数及其数值。注意:对称数指一个数的前后顺序相反的数,如123和321。
思路:
代码:
java
public static void main(String[] args) {
for (int i = 100; i <= 999; i++) {
String s = String.valueOf(i);
String reverse = new StringBuilder(s).reverse().toString();
if (s.equals(reverse)) {
System.out.println(s + " " + i);
}
}
}
运行结果:
121 121
131 131
141 141
151 151
161 161
171 171
181 181
191 191
212 212
232 323
262 262
272 272
282 282
292 292
......
希望这个回答能帮助你理解这两道编程题的设计思路和Java代码实现。