从单向链表中删除指定值的节点-牛客网

2023-11-01

题目描述
输入一个单向链表和一个节点的值,从单向链表中删除等于该值的节点,删除后如果链表中无节点则返回空指针。
链表结点定义如下:
struct ListNode
{
int m_nKey;
ListNode
m_pNext;
};
详细描述:
本题为考察链表的插入和删除知识。
链表的值不能重复
构造过程,例如
1 <- 2
3 <- 2
5 <- 1
4 <- 5
7 <- 2
最后的链表的顺序为 2 7 3 1 5 4
删除 结点 2
则结果为 7 3 1 5 4*

输入描述:
1 输入链表结点个数
2 输入头结点的值
3 按照格式插入各个结点
4 输入要删除的结点的值
输出描述:
输出删除结点后的序列,每个数后都要加空格
示例1
输入
5
2
3 2
4 3
5 2
1 4
3
输出
2 5 4 1

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

struct ListNode {
    int m_nKey;
    struct ListNode* m_pNext;
};

int main()
{
    struct ListNode* list ;
    list = (struct ListNode *)malloc(sizeof(struct ListNode));
    list ->m_pNext = NULL;
    int count;
    while(scanf("%d", &count) != EOF)
    {
        struct ListNode *hand = NULL;
        hand = (struct ListNode *)malloc(sizeof(list));
        list->m_pNext = hand;
        hand->m_pNext = NULL;
        scanf("%d", &(hand->m_nKey));
        int i;
        for(i = 0;i < count - 1; i++)
        {
            struct ListNode *new_listnode = (struct ListNode *)malloc(sizeof(struct ListNode));
            new_listnode->m_pNext = NULL;
            int cmp;
            scanf("%d" "%d", &new_listnode->m_nKey, &cmp);
            //printf("%d\n", new_listnode->m_nKey);
            struct ListNode *p = list->m_pNext;
            while(p->m_nKey != cmp)
            {
                p = p->m_pNext;
            }
            new_listnode->m_pNext = p->m_pNext;
            p->m_pNext = new_listnode;
            p = NULL;
        }
        int del;
        struct ListNode *delete = list; 
        scanf("%d", &del);
        while(delete->m_pNext->m_nKey != del)
        {
            delete = delete->m_pNext;
        }
        struct ListNode *q = delete->m_pNext; 
        delete->m_pNext = delete->m_pNext->m_pNext;
        free(q);
        delete = list->m_pNext;
        while(delete != NULL)
        {
            printf("%d ", delete->m_nKey);
            delete = delete->m_pNext;
        }
    }
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从单向链表中删除指定值的节点-牛客网 的相关文章

  • 医疗信息管理系统数据库--MySQL

    医疗信息管理系统数据库 MySQL 友情连接 1 学生成绩管理系统数据库设计 MySQL 2 邮件管理数据库设计 MySQL 3 点餐系统数据库设计 SQL Server 4 商品管理系统数据库设计 SQL Server 5 SQL Ser

随机推荐

  • 在WebView中对第三方H5页面的文本密码框添加自定义随机键盘

    前言 首先介绍一下这个需求的背景 由于公司是涉及到金融行业的需要与银行对接资金存管 出于保密性这里不直接列出公司名字和银行名字 从2018年国家对金融行业大整改以来 为了能够顺利通过备案 我们也跟着政府的脚步一步一步走向合规 好了 大致就是
  • 堡垒机-jumpserver环境搭建

    一 Jumpserver简单介绍 Jumpserver 是全球首款完全开源的堡垒机 使用 GNU GPL v2 0 开源协议 是符合 4A 的专业运维审计系统 Jumpserver 使用 Python Django 进行开发 遵循 Web
  • c语言链式栈课程设计,C语言实现链式栈(LinkStack)

    使用单链表来实现 push pop均在链表头部进行 linkStack h ifndef LINK STACK H define LINK STACK H include include include include typedef vo
  • 加密数字货币的开发技术介绍

    要问当前所有区块链应用中最火的是什么应用 非加密货币莫属 看看各个跟区块链相关的讨论组 整天热火朝天地讨论的是各种币的行情 即使是技术讨论组 除了一些热门讨论外 最吸引注意的莫过于本币的涨跌还有各种代币的ICO了 首先 加密数字货币是什么鬼
  • position absolute相关知识点

    前言 最近再看position相关知识点 发现有许多以前没有注意到的细节知识点 有不小的收获 本文就position absolute使用详细分析下 具体分析 position是CSS中比较重要的一个属性 常用于页面布局 它的值有4个 st
  • oracle数据库与postgre数据库之间的互相迁移

    oracle与postgre之间互相迁移之前要明白 postgreSQL中默认使用小写 oracleSQL中默认大写 迁移分成3个步骤 数据及结构迁移 迁移之后的类型及长度变化 不兼容的函数替换 1 数据及结构迁移 1 1数据大小写同步 o
  • JS 判断对象中是否包含某属性

    一 通过点或者方括号 我们在使用对象的时候 通过点或方括号可以获取对象的属性值 如果该对象自身不存在这个属性 就会返回undefined var obj name 小破船 doWhat 借箭 console log obj name 小破船
  • css linear-gradient 设置背景颜色渐变

    CSS3 渐变能够让背景颜色在两个或多个颜色之间平滑过渡 基本语法 background linear gradient direction color stop1 color stop2 direction 是指渐变的方向 color s
  • 迷宫问题寻宝(c++实现,求最短路径,显示路径)

    定义一个二维数组 int maze n m 它表示一个迷宫 其中的1表示道路不通 0表示可以走的路 3 表示宝藏 只能横着走或竖着走 不能斜着走 要求编程序找出找到宝藏的最短路路径 题目保证有解且只有一个最短路径 且只能从迷宫边缘进入迷宫
  • tomcat中仅启动指定的项目,不启动其它项目

    使用tomcat调试项目时 若部署过多项目会导致启动时间很长 这时指定自己想启动的项目就显得很有必要了 具体方法如下 一 打开tomcat中的server xml配置文件 在Host节点中添加或修改如下属性 deployXML false
  • QT系列第3节 QT中混合UI设计

    QT开发过程中 经常使用Qt designer设计器和代码方式结合来及进行ui设计 本节将介绍这两种方式混合进行ui开发 目录 1 工程添加图片资源 2 添加菜单 3 添加工具栏 4 简单文本编辑器实现 5 QT Creator常用快捷键
  • scrapy设置代理ip(精简版)

    在middlewares py文件中 添加下面的代码 import scrapy from scrapy import signals import random class ProxyMiddleware object def proce
  • 爬取淘宝价格

    爬取淘宝价格 from selenium import webdriver from lxml import etree from time import sleep 实例化一个浏览器对象 bro webdriver Chrome exec
  • [调用函数]

    注 梳理 整理 用来帮助自己学习 如有错误 请指出 1 编写一个函数 该函数接受两个整数作为参数并返回它们的和 在主函数中调用该函数并输出结果 示例输入 5 7 示例输出 12 解题思路 首先需要定义一个函数来实现两个整数的加法 函数的返回
  • 对于进程同步和异步的理解

    多进程并发执行具有异步的特性 进程异步就是指一个以上的进程在并发执行时具有的异步特型 就比如说两个进程之间指令的执行顺序是不确定的 具有很强的随机性 举个例子 现在有两个并发执行的进程 A 和 B 各自都有n条指令需要执行 然而 我的CPU
  • python后端学习(七)HTTP协议、实现WEB服务器

    HTTP协议简介 浏览器 gt 服务器发送的请求格式如下 GET HTTP 1 1 请求方式 路径 协议及版本 Host 127 0 0 1 8080 请求的地址 Connection keep alive 长连接 Accept text
  • RS485模块的介绍及引脚连线说明

    RS485模块通讯 1 RS 485简介 2 SP3485芯片及应用 1 RS 485简介 RS 485采用平衡发送和差分接收 因此具有抑制共模干扰的能力 以下是某宝上RS485模块的截图 应用特点 传输数据速度快 高达10Mbps 即10
  • 【老生谈算法】matlab实现粒子滤波及实现

    粒子滤波及matlab实现 1 文档下载 本算法已经整理成文档如下 有需要的朋友可以点击进行下载 说明 文档 点击下载 本算法文档 老生谈算法 matlab实现粒子滤波及实现 doc 更多matlab算法原理及源码详解可点击下方文字直达 5
  • 《Apache MINA 2.0 用户指南》第六章:传输

    最近准备将Apache MINA 2 0 用户指南英文文档翻译给大家 但是我偶然一次百度 发现 Defonds 这位大牛已经翻译大部分文档 原文链接 http mina apache org mina project userguide c
  • 从单向链表中删除指定值的节点-牛客网

    题目描述 输入一个单向链表和一个节点的值 从单向链表中删除等于该值的节点 删除后如果链表中无节点则返回空指针 链表结点定义如下 struct ListNode int m nKey ListNode m pNext 详细描述 本题为考察链表