单链表插入操作实现及示例

需积分: 9 0 下载量 118 浏览量 更新于2024-09-13 收藏 2KB TXT 举报
"这篇文章主要介绍了如何在单链表中进行插入操作。单链表是一种基本的数据结构,由一系列节点组成,每个节点包含数据元素和指向下一个节点的指针。单链表的插入操作通常涉及在特定位置或末尾添加新节点。文章提供了C++代码实现,包括单链表类(ListNode 和 LinkList)以及相应的插入方法(LL_insert)。" 在单链表中插入一个元素是数据结构中的基础操作之一。单链表不像数组那样可以直接在任意位置修改元素,因为每个节点只存储数据和指向下一个节点的指针,不存储前一个节点的信息。因此,插入操作需要遍历链表来找到正确的位置。 首先,定义一个链表节点类(ListNode),包含两个成员:一个整型数据(data)和一个指向下一个节点的指针(next)。构造函数允许初始化这些成员,其中`ListNode(ptrNext=NULL)`用于创建一个空节点,`ListNode(item, ptrNext=NULL)`用于创建一个带有初始数据的节点。 接下来,定义一个链表类(LinkList),包含头节点(head)和链表长度(len)。类中包含多个成员函数: 1. `LinkList()`:构造函数,初始化头节点为新创建的空节点,长度为0。 2. `~LinkList()`:析构函数,释放链表中所有节点的内存。 3. `int LL_len()`:返回链表的长度。 4. `ListNode* LL_index(int i)`:返回第i个节点,返回值为NULL表示索引超出范围。 5. `int LL_get(int i)`:获取第i个节点的值,返回-1表示索引超出范围。 6. `int LL_insert(int item, int i)`:在第i个位置插入值为item的新节点。如果i为0,则插入到链表头部;如果i等于链表长度,则插入到链表尾部。 7. `int LL_del(int i)`:删除第i个节点,返回0表示成功,-1表示失败。 8. `int LL_swap(int i, int k)`:交换第i个节点和第k个节点的值。 9. `int LL_merge(LinkList* sla, LinkList* slb)`:合并两个链表sla和slb。 在`LL_insert`函数中,首先要检查插入位置是否合法,然后根据i的值决定是在头部、中间还是尾部插入新节点。如果i小于0或大于等于链表长度,返回错误。如果在中间插入,需要找到插入点的前一个节点,然后将新节点插入。在头部插入时,新节点成为新的头节点,原头节点成为新节点的下一个节点。在尾部插入时,需要遍历整个链表直到找到最后一个节点,然后将新节点连接到其后。 这段代码实现了基本的单链表操作,可以作为一个起点来扩展其他功能,如搜索、排序、反转等。对于链表操作,理解如何遍历和修改链表结构是非常重要的,这有助于在实际编程中解决更复杂的问题。