使用c++编写实现上述要求
时间: 2024-10-09 19:03:35 浏览: 30
C#winform调用C++库案例,使用C++编写动态库,然后再用C#调用当前C++编写的动态库
5星 · 资源好评率100%
要使用 C++ 编程语言实现这个需求,你需要创建一个链表结构(Node 类),并维护一个指向链表头节点的指针。这里是一个简单的例子,展示了如何实现核心功能:
```cpp
#include <iostream>
using namespace std;
// 链表节点结构体
struct Node {
int data;
Node* next;
};
class LinkedList {
private:
Node* head; // 链表头节点指针
public:
LinkedList() { head = nullptr; }
// 向头插入元素
void insertAtHead(int value) {
Node* newNode = new Node();
newNode->data = value;
newNode->next = head;
head = newNode;
}
// 删除第k个元素(0-based)
void deleteElement(int k) {
if (head == nullptr || k < 0) return;
if (k == 0) {
Node* temp = head;
head = head->next;
delete temp;
} else {
Node* current = head, *previous = nullptr;
for (int i = 1; i < k && current != nullptr; ++i) {
previous = current;
current = current->next;
}
if (current == nullptr) return;
previous->next = current->next;
delete current;
}
}
// 在第k个元素之后插入元素
void insertAfterElement(int k, int value) {
if (head == nullptr || k <= 0) return;
Node* current = head;
for (int i = 1; i < k; ++i) {
if (current == nullptr) return;
current = current->next;
}
if (current != nullptr) {
Node* newNode = new Node();
newNode->data = value;
newNode->next = current->next;
current->next = newNode;
}
}
// 打印链表元素
void printList() {
Node* temp = head;
while (temp != nullptr) {
cout << temp->data << " ";
temp = temp->next;
}
cout << "\n";
}
};
int main() {
LinkedList list;
// 根据输入样例调用相应函数
list.insertAtHead(9);
list.insertAfterElement(1, 1);
list.deleteElement(1);
list.deleteElement(0);
list.insertAtHead(6);
list.insertAfterElement(3, 6);
list.insertAfterElement(4, 5);
list.insertAfterElement(4, 5);
list.insertAfterElement(3, 4);
list.deleteElement(6);
list.printList();
return 0;
}
```
这个程序实现了链表的基本操作,并在`main()`函数中模拟了提供的输入样例。运行这段代码,它将会按照题目要求输出最终的链表内容。
阅读全文