请用C++设计一个算法Insert(int i, T e):在单链表中插入e作为第i个元素
时间: 2024-10-25 17:14:03 浏览: 18
使用C++实现单链表的基本操作:1、创建单链表2、遍历单链表3、单链表插入4、删除单链表5、判断是否为空6、单链表的
5星 · 资源好评率100%
在C++中,我们可以使用单链表结构(包含一个指向下一个节点的指针)来实现这个功能。首先,我们需要定义链表节点的结构体,然后创建一个函数来处理插入操作。这里是一个简单的实现:
```cpp
#include <iostream>
// 定义链表节点
struct ListNode {
int val; // 节点值
ListNode* next; // 指向下一个节点的指针
ListNode(int x) : val(x), next(nullptr) {} // 构造函数
};
// 插入元素到链表函数
void insert(int i, int e, ListNode*& head) {
if (head == nullptr || i <= 0) { // 如果链表为空或索引无效
ListNode newNode(e); // 创建新节点并设置值
head = &newNode; // 将新节点设为头节点
} else {
ListNode* curr = head;
for (int j = 1; j < i && curr != nullptr; ++j) {
curr = curr->next; // 遍历找到第i个位置前一个节点
}
if (curr == nullptr) { // 如果已经到达链表末尾
std::cout << "插入位置超出链表范围\n";
} else {
ListNode newNode(e);
newNode.next = curr->next; // 插入新节点
curr->next = &newNode; // 更新当前节点的next指针
}
}
}
// 示例如何使用该函数
int main() {
ListNode* list = nullptr;
insert(1, 4, list); // 在第一个位置插入值4
insert(5, 7, list); // 插入值7在第5个位置,实际效果是追加
// ... 更多的插入操作...
return 0;
}
```
阅读全文