LincarList * Insert_List (LinearList * L,int i, elemtype e)
时间: 2024-09-10 15:24:41 浏览: 46
`Insert_List`算法用于在给定的线性链表`L`中插入元素`e`到位置`i`。这里有两个可能的方法:
1. 如果`i`等于0(即在头部插入)[^1]:
```c++
void Insert_List(LinearList *L, int i, elemtype e) {
if (i == 0) { // 插入到链表头部
new LinearListNode(e, L->head); // 创建新节点并链接到头
L->head = new LinearListNode; // 更新头节点指向新节点
}
else { // 对于其他位置的插入
LinearListNode* current = L->head;
for (int j = 0; j < i - 1 && current != nullptr; ++j)
current = current->next;
if (current == nullptr) // 检查索引越界
return;
new LinearListNode(e, current->next); // 插入元素
current->next = new LinearListNode; // 更新当前节点的下一个节点
}
}
```
2. 如果`i`大于0,遍历链表找到第`i`个位置:
```c++
if (EmptyList(L)) { // 判断链表是否为空
L->head = new LinearListNode(e, L->head); // 初始化链表时直接插入
} else {
LinearListNode* prev = nullptr;
LinearListNode* current = L->head;
for (int j = 0; j < i; ++j) {
if (current->next == nullptr) { // 找到插入位置
prev->next = new LinearListNode(e, current->next);
break;
}
prev = current;
current = current->next;
}
}
```
阅读全文