c++编写程序以函数形式实现链表基本操作建立链表,遍历链表,插入结点,删除结点,查找结点等操作
时间: 2024-11-11 13:15:01 浏览: 19
C语言实现带头结点的单向链表的基本操作
在C++中,我们可以使用结构体或类定义链表节点,并编写相应的函数来执行链表的基本操作。这里是一个简单的例子,展示了如何创建、遍历、插入、删除和查找链表节点:
```cpp
// 链表节点定义
struct ListNode {
int val; // 节点值
ListNode* next; // 指向下一个节点的指针
ListNode(int x) : val(x), next(nullptr) {} // 构造函数
};
// 函数声明
ListNode* createList(int* arr, int n); // 创建链表
void displayList(ListNode* head); // 遍历链表
void insertNode(ListNode*& head, int val); // 在链表头插入节点
ListNode* deleteNode(ListNode*& head, int key); // 删除特定值的节点
bool findNode(ListNode* head, int key); // 查找指定值的节点
// 实现部分
ListNode* createList(int* arr, int n) {
ListNode* head = new ListNode(arr[0]);
for (int i = 1; i < n; ++i) {
head->next = new ListNode(arr[i]);
head = head->next;
}
return head;
}
void displayList(ListNode* head) {
ListNode* temp = head;
while (temp != nullptr) {
std::cout << temp->val << " ";
temp = temp->next;
}
std::cout << "\n";
}
// 插入节点
void insertNode(ListNode*& head, int val) {
ListNode* newNode = new ListNode(val);
newNode->next = head;
head = newNode;
}
// 删除节点
ListNode* deleteNode(ListNode*& head, int key) {
if (head == nullptr) return nullptr;
if (head->val == key) { // 如果头节点就是目标
ListNode* temp = head;
head = head->next;
delete temp;
return head;
}
ListNode* prev = head;
while (prev->next != nullptr && prev->next->val != key) {
prev = prev->next;
}
if (prev->next != nullptr) {
ListNode* temp = prev->next;
prev->next = prev->next->next;
delete temp;
}
return head;
}
// 查找节点
bool findNode(ListNode* head, int key) {
ListNode* temp = head;
while (temp != nullptr) {
if (temp->val == key) {
return true;
}
temp = temp->next;
}
return false;
}
```
阅读全文