有头单链表怎么变成无头单链 表 详细举例 不适用C++
时间: 2023-11-28 13:50:28 浏览: 27
假设有一个头节点为 head,我们需要将它变成无头单链表。
1. 首先,我们定义一个指针变量 p,让它指向头节点。
2. 然后,我们将头节点的指针域赋值给头节点,即 head = head->next。
3. 最后,我们释放指针变量 p 的内存空间,即 free(p)。
以下是详细的代码实现:
```c
// 定义单链表结构体
typedef struct Node {
int data;
struct Node *next;
} Node;
// 将头节点变为普通节点
void removeHeadNode(Node **head) {
if (*head == NULL) {
return;
}
Node *p = *head;
*head = (*head)->next;
free(p);
}
```
在上面的代码中,我们首先定义了一个单链表结构体 Node,其中包含了数据域 data 和指针域 next。
然后,我们定义了一个函数 removeHeadNode,这个函数接受一个指向头节点指针的指针,即指向指针的指针。这样做是因为我们需要修改头节点指针的值,而指针是传值调用的,不会对原指针进行修改。
在函数中,我们首先对头指针进行非空判断,然后定义一个指针变量 p 并让它指向头节点。接着,我们将头节点的指针域赋值给头节点,即 head = head->next,这样就把头节点变成了普通节点。最后,我们释放指针变量 p 的内存空间,即 free(p)。
这样,我们就将一个带头节点的单链表变成了一个不带头节点的单链表。