带头结点的单链表插入
时间: 2023-10-19 13:05:31 浏览: 85
带头结点单链表.zip
带头结点的单链表插入操作可以通过寻找到第i-1个位置,然后将结点插入到该位置的下一个位置来实现。具体的代码实现如下:
```c++
typedef struct LNode {
int data;
struct LNode *next;
} LNode, *LinkList;
bool ListInsert(LinkList &L, int i, int e) {
if (i < 1) return false;
LNode *p;
int j = 0; // 头结点就是第0个结点
p = L; // 此时p指向头结点
// 寻找第i-1个位置
while (p != NULL && j < i-1) {
p = p->next;
j++;
}
// 此时j = i-1
if (p == NULL) return false;
LNode *s = (LNode*)malloc(sizeof(LNode));
s->data = e;
s->next = p->next;
p->next = s;
return true;
}
```
这段代码首先判断了i的合法性,然后通过循环找到第i-1个节点,如果找到了该节点,则创建一个新的节点s,并将e赋值给s的data,然后将s插入到p的下一个位置。最后返回true表示插入成功。
#### 引用[.reference_title]
- *1* *2* [含头节点单链表(初始化、插入、删除、查询)](https://blog.csdn.net/qq_42174306/article/details/123817620)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [数据结构——带头结点的单链表插入和删除操作(C/C++实现)](https://blog.csdn.net/m0_63339166/article/details/127080045)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文