采用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