写一个不带头结点单链表判断为空链表的C++语言
时间: 2023-03-19 15:23:52 浏览: 155
以下是一个简单的不带头结点的单链表结构体定义:
```c
struct Node {
int data;
struct Node* next;
};
```
判断一个不带头结点的单链表是否为空链表,需要判断链表的头指针是否为空。如果链表的头指针为空,那么这个链表就是空链表。以下是判断空链表的代码实现:
```c
struct Node* head = NULL; // 初始化为空链表
if (head == NULL) {
printf("这是一个空链表。\n");
} else {
printf("这不是一个空链表。\n");
}
```
在这个例子中,我们先初始化一个不带头结点的单链表的头指针 `head` 为空指针。然后通过判断 `head` 是否为 `NULL`,来判断链表是否为空链表。如果 `head` 为空指针,那么就说明这个链表是空链表。
相关问题
写一个带头结点单链表判断为空链表的C++语言
以下是一个带头结点单链表判断为空链表的 C 语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
struct Node* next;
};
int isEmpty(struct Node* head) {
if (head->next == NULL) {
return 1;
} else {
return 0;
}
}
int main() {
struct Node* head = (struct Node*)malloc(sizeof(struct Node));
head->next = NULL;
if (isEmpty(head)) {
printf("链表为空\n");
} else {
printf("链表不为空\n");
}
return 0;
}
```
上述代码中,我们定义了一个带头结点的单链表节点结构体 `Node`,其中 `data` 存储节点数据,`next` 存储指向下一个节点的指针。
`isEmpty` 函数用于判断链表是否为空,参数为链表头指针 `head`。如果头结点的下一个指针为 `NULL`,则认为链表为空,返回 1;否则返回 0。
在 `main` 函数中,我们先创建一个头结点并初始化,然后调用 `isEmpty` 函数判断链表是否为空。如果为空,输出“链表为空”;否则输出“链表不为空”。
注意,这里的链表为空指的是除头结点外没有其他节点,因此头结点的存在并不影响判断。
写一个不带头结点单链表清空链表的C++语言
以下是清空单链表的 C 语言代码,不包含头节点:
```c
#include <stdlib.h>
struct ListNode {
int val;
struct ListNode *next;
};
void clearList(struct ListNode **head) {
struct ListNode *current = *head;
while (current != NULL) {
struct ListNode *temp = current;
current = current->next;
free(temp);
}
*head = NULL;
}
```
在这个函数中,我们将遍历整个链表并释放每个节点的内存。最后,将链表的头节点指针设置为 NULL,以便我们知道链表为空。这个函数接受一个指向指针的指针作为参数,因为我们需要更改指向头节点的指针。
阅读全文