本关任务:完成创建一个带表头的空链表的操作。 编程要求 根据提示,在右侧编辑器补充代码,完成能在表头插入结点的函数。 开始你的任务吧,祝你成功!
时间: 2024-09-29 13:02:33 浏览: 51
在编程中,创建一个带表头的空链表通常涉及定义一个节点结构体和一个指向该节点的指针变量作为链表的头部。这里假设我们使用的是结构体`ListNode`表示链表节点,其中包含数据域`data`和指向下一个节点的指针`next`。在大多数语言中,如C++或Python的列表(list)等数据结构可以视为简单版本的链表。
为了能够在表头插入新节点,我们需要编写一个名为`insertAtHead`的函数,其基本步骤如下:
1. 定义一个新的节点,并初始化它的数据字段;
2. 将新节点的`next`指针设置为当前链表的头部;
3. 如果链表为空,则新的节点同时是头部和尾部;
4. 更新链表头部指针。
下面是这个操作的一个伪代码示例(用Python表达):
```python
class ListNode:
def __init__(self, data=0):
self.data = data
self.next = None
def insertAtHead(head, new_data):
# 创建新节点
new_node = ListNode(new_data)
# 如果链表为空,直接将新节点设为头和尾
if not head:
head = new_node
else:
# 新节点成为新的头,旧头的next指向原头
new_node.next = head
head = new_node
return head
```
对于C++,代码会类似:
```cpp
struct ListNode {
int data;
ListNode* next;
};
ListNode* insertAtHead(ListNode*& head, int new_data) {
// 创建新节点
ListNode* newNode = new ListNode{new_data};
// 链表为空或只有一个元素时
if (!head) {
head = newNode;
} else {
// 新节点成为新的头,旧头的next指向新头
newNode->next = head;
head = newNode;
}
return head;
}
```
阅读全文