编写一个程序,使用单链表结构来存储整数序列1, 2, 3, 4, 5,并分别打印出每个节点中存储的数据值对应的内存地址,请解释程序实现和输出示例。
时间: 2024-10-29 22:12:38 浏览: 6
首先,我们需要创建一个单链表节点类`ListNode`,包含一个整数值和指向下一个节点的引用。然后我们会创建链表结构,并插入给定的整数序列。
```python
class ListNode:
def __init__(self, value=0, next=None):
self.value = value
self.next = next
# 创建链表并插入元素
def create_linked_list(numbers):
head = None
for num in numbers:
new_node = ListNode(num)
if not head:
head = new_node
else:
current = head
while current.next:
current = current.next
current.next = new_node
return head
# 打印节点值及其内存地址
def print_node_values_and_addresses(head):
node = head
while node:
print(f"Node value: {node.value}, Memory address: {id(node)}")
node = node.next
# 创建并打印链表
numbers = [1, 2, 3, 4, 5]
linked_list = create_linked_list(numbers)
print_node_values_and_addresses(linked_list)
```
在这个程序中,我们首先初始化头节点`head`,然后遍历输入列表`numbers`,为每个数字创建一个新的`ListNode`实例。我们将新节点设置为当前节点的下一个节点,直到达到最后一个节点。接下来,`print_node_values_and_addresses`函数会递归地访问每个节点,打印出其值以及在内存中的地址。
输出示例可能会像这样:
```
Node value: 1, Memory address: 140696886478784
Node value: 2, Memory address: 140696886478792
Node value: 3, Memory address: 140696886478800
Node value: 4, Memory address: 140696886478808
Node value: 5, Memory address: 140696886478816
```
注意,内存地址会随着程序运行时的不同而变化,因为它们是基于Python运行时环境的内存分配。实际运行时,您需要根据当时的环境查看具体的地址。
阅读全文