链表的判空、结点的插入操作、删除操作
时间: 2023-08-05 11:02:01 浏览: 44
链表的判空、结点的插入操作、删除操作的实现如下:
1. 链表的判空:遍历链表,如果链表为空则返回 true,否则返回 false。
```
bool is_empty(ListNode* head) {
return head == nullptr;
}
```
2. 结点的插入操作:在链表的指定位置插入一个新结点。
```
void insert_node(ListNode* head, int pos, int val) {
ListNode* node = new ListNode(val);
if (pos == 0) {
node->next = head;
head = node;
return;
}
ListNode* prev = head;
for (int i = 0; i < pos - 1 && prev != nullptr; i++) {
prev = prev->next;
}
if (prev == nullptr) {
return;
}
node->next = prev->next;
prev->next = node;
}
```
3. 结点的删除操作:从链表中删除指定位置的结点。
```
void delete_node(ListNode* head, int pos) {
if (head == nullptr) {
return;
}
if (pos == 0) {
ListNode* del = head;
head = head->next;
delete del;
return;
}
ListNode* prev = head;
for (int i = 0; i < pos - 1 && prev != nullptr; i++) {
prev = prev->next;
}
if (prev == nullptr || prev->next == nullptr) {
return;
}
ListNode* del = prev->next;
prev->next = del->next;
delete del;
}
```
需要注意的是,在实现链表的插入和删除操作时,需要先判断链表是否为空,避免空指针异常。