在单链表头节点前面插入节点
时间: 2023-12-25 18:02:46 浏览: 45
在单链表头节点前面插入一个新节点,需要进行以下步骤:
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. 创建一个新节点,设置新节点的数据域为要插入的数据,设置新节点的指针域为 NULL。
2. 找到要插入的位置,即找到插入节点的前一个节点,可以从链表的头节点开始遍历,直到找到插入位置的前一个节点。
3. 将新节点的指针域指向插入位置的后一个节点。
4. 将插入节点的前一个节点的指针域指向新节点。
下面是一个示例代码:
```c++
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
void insertNode(ListNode* &head, int val, int pos) {
ListNode* newNode = new ListNode(val);
if (pos == 0) {
newNode->next = head;
head = newNode;
return;
}
ListNode* pre = head;
for (int i = 0; i < pos - 1; i++) {
pre = pre->next;
}
newNode->next = pre->next;
pre->next = newNode;
}
```
在这个例子中,我们创建了一个 `ListNode` 结构体,包含一个数据域和一个指针域。然后定义了一个 `insertNode` 函数,第一个参数是链表的头节点指针的引用,第二个参数是要插入的数据,第三个参数是要插入的位置。在函数中,我们首先创建一个新节点,并判断是否插入在链表头,然后遍历链表找到插入位置的前一个节点,最后插入新节点。
java单链表头插法
单链表的头插法是指将新节点插入到链表的头部位置。具体实现步骤如下:
1. 创建一个新节点,并将要插入的值赋给新节点的数据域。
2. 将新节点的指针域指向原链表的头节点。
3. 将新节点设置为链表的头节点。
以下是Java实现单链表头插法的代码示例:
```java
public class LinkedList {
private Node head; // 链表头节点
private class Node {
int data; // 节点数据
Node next; // 指向下一个节点的指针
public Node(int data) {
this.data = data;
this.next = null;
}
}
public void insertAtHead(int data) {
Node newNode = new Node(data); // 创建新节点
if (head == null) {
head = newNode; // 如果链表为空,将新节点设置为头节点
} else {
newNode.next = head; // 将新节点的指针域指向原链表的头节点
head = newNode; // 将新节点设置为链表的头节点
}
}
}
```