数据结构专题(二):2.5在链表指定位置插入元素

在这里插入图片描述
如下代码:

///插入元素,在指定位置插入给定的值
//在指定位置之后插入
void insert_After_LkList(LinkListNode *ptr,ElemType x)
{
    LinkListNode *s;
    s = (LinkListNode *)malloc(sizeof(LinkListNode));
    s->data = x;
    s->pNext = ptr->pNext;
    ptr->pNext = s; 
}    
//在指定元素之后插入
void insert_Before_LkList(LinkListNode *pHead,LinkListNode *ptr,ElemType x)
{
    LinkListNode *s,*qPtr;
    s = (LinkListNode *)malloc(sizeof(LinkListNode));
    s->data = x;
    qPtr = pHead;   //qPtr是用来代替pHead的移动的,ptr是目标结点
    while(qPtr->next !=ptr)
    {
        qPtr = qPtr->pNext;
    } 
    s->pNext = ptr;
    qPtr->pNext = s;
    //因为链表是单向的,虽然我知道当前结点是ptr但是在语法层面上我如果想知道ptr的前继结点必须通过遍历
    //查到了当前结点的前继,才能使用后插的方法完成结点的加入
}
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是Python代码,用于在链表指定位置插入元素: ```python class Node: def __init__(self, data): self.data = data self.next = None class LinkedList: def __init__(self): self.head = None def insert(self, data, position): if position < 0: print("Invalid position") return new_node = Node(data) if position == 0: new_node.next = self.head self.head = new_node return current = self.head current_position = 0 while current_position < position - 1: current = current.next current_position += 1 if current is None: break if current is None: print("Invalid position") return new_node.next = current.next current.next = new_node def display(self): current = self.head while current: print(current.data, end=" ") current = current.next print() # Create a linked list linked_list = LinkedList() # Insert elements linked_list.insert(1, 0) linked_list.insert(2, 0) linked_list.insert(3, 1) # Display the linked list linked_list.display() ``` 在上面的代码,我们首先定义了`Node`类和`LinkedList`类。`Node`类表示链表的节点,它包含一个数据项和一个指向下一个节点的指针。`LinkedList`类表示链表本身,它包含一个指向链表头部的指针。 我们定义了一个`insert()`方法,它接受两个参数:要插入数据和要插入位置。如果要插入位置小于0,则打印一条错误消息并返回。否则,我们创建一个新的节点,并检查要插入位置是否为0。如果是,则将新节点插入链表头部。否则,我们遍历链表,找到要插入位置(如果它是有效的)。一旦找到位置,我们将新节点插入链表。 最后,我们定义了一个`display()`方法,它遍历链表并打印每个节点的数据项。我们创建一个新的链表对象,并插入一些元素。然后,我们调用`display()`方法以显示链表元素

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值