04 链表的删除:删除链表中指定位置的元素(Linked List 链表)

采用C语言实现:完整删除链表中指定位置的元素的代码。

原链表:3->4->5。现在要删除位置为2处的元素。
删除后的链表:3->5。

#include <stdio.h>
#include <stdlib.h>
#include <MacTypes.h>

/*定义节点*/
typedef struct Node {
    int data;
    struct Node *next;
} LinkedList;

/*使用头插法来构建一个链表*/
void push(struct Node **head_ref, int new_data);

/*给一个指针的指针作为引用,作为这个链表的头指针,进行删除指定位置的节点*/
void deleteNode(struct Node **head_ref, int position);

/*打印链表*/
void printList(LinkedList *node);

int main() {
    LinkedList *head_ref = NULL;
    //注意这里要传取地址符
    push(&head_ref, 3);
    push(&head_ref, 4);
    push(&head_ref, 5);
    deleteNode(&head_ref,2);
    printList(head_ref);
    return 0;
}

/*
 * 头插法的几步
 * 1.定义一个新的指针,给指针申请空间,使其变成一个新的节点。
 * 2.给这个新的节点data数据域赋值。
 * 3.将这个新的节点的next指针指向原来的开始节点(原头指针指向的节点)
 * 4.将原头指针左移移动到新的节点
 */
void push(struct Node **head_ref, int new_data) {

    LinkedList *new_node
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值