题目描述: 你需要实现一个链表,并编写相关的操作函数。 要求编写一个程序,包含以下功能: 1. 创建一个空链表。 2. 在链表的末尾插入一个节点。 3. 在链表中删除指定节点。 4. 打印链表的所有节点值。
时间: 2024-02-17 13:02:38 浏览: 63
c语言-leetcode 0025-reverse-nodes-in-k-group.zip
好的,我会为您解答这个问题。
首先,我们需要定义一个链表节点的数据结构,包括节点的值和指向下一个节点的指针,代码如下:
```c++
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
```
然后,我们需要实现以下四个操作函数:
1. 创建一个空链表。
```c++
ListNode* createList() {
ListNode* head = new ListNode(0);
return head;
}
```
这个函数创建了一个空链表,也就是只有一个头节点的链表。
2. 在链表的末尾插入一个节点。
```c++
void insertNode(ListNode* head, int val) {
ListNode* newNode = new ListNode(val);
ListNode* p = head;
while (p->next != NULL) {
p = p->next;
}
p->next = newNode;
}
```
这个函数会创建一个新节点,并将其插入到链表的末尾。
3. 在链表中删除指定节点。
```c++
void deleteNode(ListNode* head, int val) {
ListNode* p = head;
while (p->next != NULL) {
if (p->next->val == val) {
ListNode* temp = p->next;
p->next = temp->next;
delete temp;
return;
}
p = p->next;
}
}
```
这个函数会在链表中找到值为val的节点,并将其删除。
4. 打印链表的所有节点值。
```c++
void printList(ListNode* head) {
ListNode* p = head->next;
while (p != NULL) {
cout << p->val << " ";
p = p->next;
}
cout << endl;
}
```
这个函数会遍历整个链表,并打印出每一个节点的值。
完整代码如下:
```c++
#include <iostream>
using namespace std;
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode* createList() {
ListNode* head = new ListNode(0);
return head;
}
void insertNode(ListNode* head, int val) {
ListNode* newNode = new ListNode(val);
ListNode* p = head;
while (p->next != NULL) {
p = p->next;
}
p->next = newNode;
}
void deleteNode(ListNode* head, int val) {
ListNode* p = head;
while (p->next != NULL) {
if (p->next->val == val) {
ListNode* temp = p->next;
p->next = temp->next;
delete temp;
return;
}
p = p->next;
}
}
void printList(ListNode* head) {
ListNode* p = head->next;
while (p != NULL) {
cout << p->val << " ";
p = p->next;
}
cout << endl;
}
int main() {
ListNode* head = createList();
insertNode(head, 1);
insertNode(head, 2);
insertNode(head, 3);
insertNode(head, 4);
printList(head);
deleteNode(head, 3);
printList(head);
return 0;
}
```
希望能够帮到您!
阅读全文