先上代码:
//单链表的删除,在链表中删除值为x的元素
LinkedList LinkedListDelete(LinkedList L,int x) {
Node *ptr,*ptr1; //ptr1为前驱结点,ptr为查找的结点。
ptr = L->next;
while(ptr->data != x) { //查找值为x的元素
ptr1 = ptr;
ptr = ptr->next;
}
ptr1->next = ptr->next; //删除操作,将其前驱next指向其后继。
free(ptr);
return L;
}
逻辑不难,首先通过指针ptr在链表中查找数值为x的元素,同时使用ptr1记录ptr的前驱节点。一旦找到值为x的节点,就会执行删除操作:将前驱节点ptr1的next指针指向ptr的后继节点,然后释放ptr节点的内存空间。最后返回修改后的链表头指针L。