头插法创建线性表代码
时间: 2024-09-26 19:00:21 浏览: 30
头插法是一种常见的在线性表(如链表)中插入元素的方法,它的基本思想是在新元素之前添加节点。这里我将以单向链表为例,给出Python中的代码实现:
```python
class Node:
def __init__(self, data):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
# 头插法插入元素
def insert_at_head(self, new_data):
new_node = Node(new_data) # 创建新节点
if self.head is not None: # 链表非空
new_node.next = self.head # 新节点的next指向当前头节点
self.head = new_node # 更新头节点为新节点
# 使用示例
linked_list = LinkedList()
linked_list.insert_at_head(5)
linked_list.insert_at_head(3)
```
在这个例子中,`insert_at_head`函数接收一个新的数据值,创建一个新的节点,并将其`next`属性指向前一个列表中的头节点(如果存在)。最后,将新的头节点设置为链表的新头。
相关问题
数据结构线性表代码只需要完成头插法
数据结构中的线性表,如链表,通常包含一个节点数组,每个节点存储数据以及指向下一个节点的指针。头插法(Insertion at the beginning)是一种在线性表中添加新元素的操作,它的工作原理是在列表的第一个位置插入新元素。以下是使用Python实现单链表头插法的基本步骤:
```python
class Node:
def __init__(self, data=None):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
# 头插法函数
def insert_at_beginning(self, new_data):
new_node = Node(new_data)
if not self.head:
self.head = new_node
else:
new_node.next = self.head
self.head = new_node
```
在这个例子中,`insert_at_beginning`方法创建一个新的节点,并将其`next`属性设置为当前的头节点,然后更新头节点为新节点。如果链表为空,则直接将头节点设为新节点。
请输入一个线性表,用头插法创建为单链表,并输出。操作完成后释放创建的单链表。 输入 输入包括两行: 第一行输入单链表长度 第二行输入线性表的元素 输出 输出头插法创建的单链表,每个节点的值之间空一格 如果创建失败,请输出 -1
这个任务要求你接收用户的输入来创建一个单链表,并使用头插法(即在链表头部插入元素)进行操作。以下是基于这个需求的一个Python代码示例,假设输入是一个包含整数的字符串,例如 "5 1 2 3 4",表示链表有5个节点,元素分别是1, 2, 3, 4。
```python
class Node:
def __init__(self, data):
self.data = data
self.next = None
def create_linked_list(input_str):
elements = input_str.split(' ')
length = int(elements[0])
head = Node(int(elements[1])) if length else None
current = head
for i in range(2, length + 1):
new_node = Node(int(elements[i]))
new_node.next = current
current = new_node
return head
def print_linked_list(head):
current = head
while current is not None:
print(current.data, end=' ')
current = current.next
print()
def release_memory(head):
current = head
while current is not None:
next_node = current.next
del current
current = next_node
def main():
try:
user_input = input("请输入线性表的元素(例如 '5 1 2 3 4'):")
head = create_linked_list(user_input)
if head is not None:
print_linked_list(head)
release_memory(head)
else:
print(-1)
except Exception as e:
print(f"错误:{e}")
if __name__ == "__main__":
main()
```
在这个例子中,用户首先输入链表长度和元素,程序会创建一个单链表,然后用`print_linked_list`函数输出结果。如果链表创建失败(例如输入格式不正确),则输出 `-1` 并释放已创建的链表内存。
阅读全文