单向链表插入节点 void Add_LinkedList(first)
时间: 2023-07-11 09:23:04 浏览: 65
好的,这是单向链表插入节点的示例代码:
```
void Add_LinkedList(Node** first, int value) {
Node* newNode = (Node*)malloc(sizeof(Node)); // 创建新节点
newNode->data = value;
newNode->next = NULL;
if (*first == NULL) { // 如果链表为空,直接将新节点作为第一个节点
*first = newNode;
} else {
Node* current = *first;
while (current->next != NULL) { // 找到链表的最后一个节点
current = current->next;
}
current->next = newNode; // 将新节点插入到链表的最后
}
}
```
这个函数接受链表的头指针 `first` 和要插入的值作为参数。如果链表为空,直接将新节点作为第一个节点;否则,遍历链表找到最后一个节点,将新节点插入到链表的最后。注意,这里使用了指向指针的指针 `Node**`,是因为需要在函数中修改链表的头指针。
相关问题
销毁单向链表 bool Destroy_LinkedList(first)
这个函数的作用是销毁一个单向链表,其中 `first` 是链表的头节点指针。
函数的实现可以采用循环方式,具体步骤如下:
1. 定义一个临时指针变量 `current`,将其初始化为头节点指针 `first`。
2. 循环遍历链表,当 `current` 指针不为空时,执行以下步骤:
1. 定义一个临时指针变量 `temp`,将其初始化为 `current` 指针指向的下一个节点。
2. 销毁当前节点,即释放 `current` 指针指向的内存空间。
3. 将 `current` 指针指向下一个节点,即将 `current` 赋值为 `temp`。
3. 将头节点指针 `first` 置为 `NULL`,表示链表已被销毁。
以下是具体的代码实现:
```c++
bool Destroy_LinkedList(Node* first) {
Node* current = first;
while (current != NULL) {
Node* temp = current->next;
free(current);
current = temp;
}
first = NULL;
return true;
}
```
需要注意的是,销毁链表后,头节点指针 `first` 也需要置为 `NULL`,否则 `first` 仍然指向之前链表的头节点,可能导致内存泄漏或访问非法内存的错误。
输出整形链表 void Print_LinkedList(Node*pnew)
好的,以下是输出整形链表的函数实现代码:
```c++
void Print_LinkedList(Node* pnew)
{
while (pnew != nullptr)
{
cout << pnew->val << " ";
pnew = pnew->next;
}
cout << endl;
}
```
其中,Node 是链表的节点数据结构,包含了一个整型变量 val 和一个指向下一个节点的指针 next。
在函数中,我们使用了一个 while 循环来遍历链表,每次输出当前节点的 val 值,并将指针指向下一个节点,直到链表末尾为止。最后输出一个换行符,以便下一次输出不会与本次输出连在一起。