创建一个单链表同时满足1.创建单链表时需带有头结点,既可以顺序构建也可以逆序构建,但单链表的长度和其中的结点元素必须是任意输入的。 2.对创建的两个单链表和归并后的单链表在主函数中分别进行输出。
时间: 2024-10-26 10:00:56 浏览: 20
创建一个带头结点的单链表,并支持顺序或逆序构建,可以设计一个通用的链表结构,如`ListNode`,它包含一个指向下一个节点的指针以及一个数据值。我们可以创建两个函数:
1. `createList(order: str, length: int, elements: list) -> ListNode`:
这个函数接受三个参数:`order`表示链表的构建顺序("forward" 或 "reverse"),`length`是链表的长度,`elements`是一个列表,包含链表中的元素值。根据`order`,可以选择先添加头结点再依次添加元素,或者从最后一个元素开始添加。
```python
class ListNode:
def __init__(self, value=0, next=None):
self.value = value
self.next = next
def create_list(order: str, length: int, elements: list) -> ListNode:
head = ListNode() # 创建头结点
if order == 'forward':
for i in range(length - 1, -1, -1): # 逆序构建
head.next = ListNode(elements[i])
head = head.next
else: # 正序构建
for i in range(length):
head.next = ListNode(elements[i])
head = head.next
return head
```
2. `print_linked_list(head: ListNode)`:
这个函数用于打印链表,无论链表是正向还是反向。
```python
def print_linked_list(head: ListNode):
current = head
while current:
print(current.value, end=" -> ")
current = current.next
print("None")
```
在主函数`main`中,你可以这样使用:
```python
def main():
elements = [1, 2, 3, 4, 5]
forward_length = 5
reverse_length = 3
forward_head = create_list("forward", forward_length, elements)
reverse_head = create_list("reverse", reverse_length, elements)
print("Forward List:")
print_linked_list(forward_head)
print("\nReversed List:")
print_linked_list(reverse_head)
if __name__ == "__main__":
main()
```
这将分别打印出顺序和逆序构造的链表。请注意,你需要根据实际需求调整链表的长度和元素。
阅读全文