单链表删除节点

单链表删除节点

node *del(node *head, int num)

{

node *p1, *p2;

p1 = head;

while (num != p1->data && p1->next != NULL)

{

p2 = p1;

p1 = p1->next;

}

if (num == p1->data)

{

if (p1 == head)

head = p1->next;

else

p2->next = p1->next;

free(p1);

}

else

printf("\n %d could not been found.",num);

return (head);

}

单链表插入节点

node *insert(node* head, int num)

{

node *p0, *p1, *p2;

p1 = head;

p0 = (node *)malloc(sizeof(node));

p0->data = num;

while (p0->data > p1->data && p1->next != NULL)

{

p2 = p1;

p1 = p1->next;

}

if (p0->data <= p1->data)

{

if (head == p1)

{

p0->next = p1;

head = p0;

}

else

{

p2->next = p0;

p0->next = p1;

}

}

else

{

p1->next = p0;

p0->next = NULL;

}

return (head);

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-19 09:14:19

单链表删除节点的相关文章

C语言实现单链表的节点插入(带头结点)

我在之前一篇博客<C语言实现单链表(不带头结点)节点的插入>中具体实现了怎样在一个不带头结点的单链表中进行节点的插入.可是在实际应用中,带头结点的链表更为经常使用.更为方便.今天我们就要来使用带头结点的单链表进行节点的插入.演示样例代码上传至 https://github.com/chenyufeng1991/InsertList_HeadNode  . 核心代码例如以下: Node *InsertNode(Node *pNode,int pos,int x){ int i = 0; Node

单链表的节点内数据值的删除问题(携程网笔试题)

问题描述:给定一个单链表,链表中存储的数据都为整数,给定一个整数x,将单链表中所有与x相等的元素删除. 例如:单链表为(1,2,3,4,2,4),x=2,则删除节点后链表为(1,3,4,4) 分析:这是链表的基本操作问题,具体的Java代码如下: 1 import java.util.*; 2 class Node{ //链表节点的结构 3 int data; 4 Node next=null; 5 } 6 7 public class Main { 8 public static void c

删除单链表中间节点

题目:(先思考,再往下看) 从无头链表中删除节点.假设有一个没有头指针的单链表.一个指针指向此链表中间的一个节点(不是第一个,也不是最后一个节点),请将该节点从单链表中删除---<编程之美> 参考:单链表反转  <算法之美>の链表问题の从链表中删除节点 代码待续 ......

单链表——带头节点

一.链表简介 1 数据结构中,链表是最基础的.然而链表根据不同的需求分成的种类很多,单向或双向链表,循环或非循环链表,带头节点或者不带头节点的链表. 2 本文实现——带头节点的单链表. 3 由于仅仅是学习链表的基本操作,所以在数据字段仅仅设置一个字段:   由于仅仅是学习基本操作,不涉及复杂的算法思想,所以不会很难,主要以代码为主,附上必要的解释即可. 二.具体实现 整体分析:带有头节点的单链表的操作很方便,主要体现在插入和删除时不需要判断是否是第一个元素. 1) 头文件定义如下: 1 #ifn

[LeetCode系列] 双单链表共同节点搜索问题

找到两个单链表的共同节点. 举例来说, 下面两个链表A和B: A: a1 → a2 c1 → c2 → c3 B: b1 → b2 → b3 共同节点为c1. 分析: 共同节点距离A,B的起点headA, headB的距离差为定值, 等于它们的各自总长的差值, 我们只需要求出这个差值, 把两个链表的头移动到距离c1相等距离的起点处即可. 代码: /** * Definition for singly-linked list. * struct ListNode { * int val; * Li

华南理工数据结构大作业第一题单链表 删除创建等各种简易操作

#include<iostream> #include<windows.h> #include<string> /* (1) 初始化单链表h: (2) 依次插入5个元素:{"张三" , 85}, {"李四" , 95}, {"王五" , 75}, {"陈军" , 80}, {"程涛" , 90} (3) 输出单链表h的内容: (4) 输出单链表的长度: (5) 输出单链表

单链表--删除链表中的指定结点

1.注意单链表中找到要删除的结点但无法找到它的前一结点,有个简便方法!!! 2. 1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *next; 6 * ListNode(int x) : val(x), next(NULL) {} 7 * }; 8 */ 9 class Solution { 10 public: 11 void deleteNode(List

链表删除节点 欢迎喷 随便喷

public class Node { double data = 0; Node next = null; public Node(double data) { this.data = data; } public static Node reverse(Node head) { Node a = head; Node b = a.next; a.next = null; Node tmp = null; while (b != null) { tmp = b.next; b.next = a

不同寻常的单链表删除的方法

/* * ===================================================================================== * Filename: singly_link.c * Author: RollStone (rs), [email protected] * Copyright: All Rights Reserved. Copyright(c) 2007-2014 * Description: * * Version: 1.0