在单链表头节点前面插入节点
时间: 2023-12-25 15:02:46 浏览: 112
在单链表头节点前面插入一个新节点,需要进行以下步骤:
1. 创建一个新节点,将需要插入的数据存储在新节点中。
2. 将新节点的 next 指针指向当前链表的头节点。
3. 将链表的头节点指向新节点,使其成为新的头节点。
具体的代码实现如下:
```c++
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
void insertNodeAtHead(ListNode *&head, int val) {
ListNode *newNode = new ListNode(val);
newNode->next = head;
head = newNode;
}
```
其中 `ListNode` 为链表节点的结构体,`insertNodeAtHead` 函数为在链表头插入节点的函数。需要注意的是,函数中的 `head` 参数为一个指向链表头节点指针的引用,这样可以直接改变链表头节点的指向。
相关问题
单链表头节点后插入元素
在单链表中,在头节点之后插入新元素通常涉及到以下几个步骤:
1. **创建新节点**:首先,你需要创建一个新的节点,这个节点将存储你要插入的数据。
2. **检查列表是否为空**:如果链表的头节点(head)是`null`,说明链表是空的,此时直接设置新节点为头节点即可。
3. **修改头节点的下一个指针**:如果链表非空,找到头节点的下一个位置(即`head.next`),然后将新节点的`next`属性指向当前的`next`节点,即`newNode.next = head.next`。
4. **更新头节点**:最后,将头节点的`next`指针指向新节点,即`head.next = newNode`。
这里是一个简单的伪代码示例:
```python
// 假设 Node 类有数据域 data 和 next 指针
Node insertAfterHead(Node head, int data) {
if (head == null) {
return new Node(data); // 创建并返回新头
}
Node newNode = new Node(data);
newNode.next = head.next;
head.next = newNode; // 将头的 next 指向新节点
return head;
}
```
单链表头节点后插入元素及遍历单链表
在单链表中,如果我们想在头节点之后插入新元素,通常会采用以下步骤:
1. **创建新节点**:首先,我们需要创建一个新的节点,并将其数据成员赋值为待插入的数据。
2. **指针更新**:将新节点的`next`指针指向当前的头节点,因为我们要让它成为新的头节点。
3. **头节点更新**:如果链表为空(即原来的头节点`null`),则将新节点设置为新的头节点。若链表非空,则只需修改新节点的`next`指针即可。
遍历单链表的常见方法是使用迭代或递归:
**迭代法**:
```python
def iterate_list(head):
current = head
while current is not None:
# 处理当前节点
print(current.data)
current = current.next
```
在这个函数里,我们从头节点开始,依次访问每个节点直到链表结束。
**递归法**(虽然不是最佳实践,但在某些特定场景下可以使用):
```python
def recursive_list(head):
if head is not None:
# 处理头节点
print(head.data)
# 递归处理剩余部分
recursive_list(head.next)
```
这里,我们会先打印头节点,然后对下一个节点继续递归调用自身。
阅读全文