当前位置: 首页 > article >正文

C++ 删除无头链上所有指定值为x的节点。

C++ 删除无头链上所有指定值为x的节点。

#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>
typedef struct app
{
    int data;
    struct app* next;
}APP;
int main()
{
    int n;
    int node;
    int x;
    while (scanf("%d", &n) != EOF)
    {
        APP* head = NULL, * p = NULL, * newnode = NULL;
        for (int i = 0; i < n; i++)
        {
            scanf("%d", &node);
            if (head == NULL)
            {
                head = (APP*)malloc(sizeof(APP));
                p = head;
                head->data = node;
                head->next = NULL;
            }
            else
            {
                newnode = (APP*)malloc(sizeof(APP));
                newnode->data = node;
                newnode->next = NULL;
                p->next = newnode;
                p = newnode;
            }
        }
        
        scanf("%d", &x);

        APP* pre = NULL;  //要删节点的前一个节点
        APP* curr = head;// curr当前
        while (curr) {
            if (curr->data == x) {
                
                //分两种情况处理
                if (pre == NULL) {//说明是链首删                    
                    APP* t = curr;
                    curr = curr->next;
                    free(t);
                    head=curr;
                    continue;
                }
                else {
                    pre->next = curr->next;
                    free(curr);
                    curr = pre->next;
                }
            }else{//不需要删的遍历下一条
                pre = curr;
                curr = curr->next;
            }             
        }



        p = head;
        while (p)
        {
            printf("%d  ", p->data);

            p = p->next;
        }
        puts("");

    }

}


http://www.kler.cn/news/135981.html

相关文章:

  • Redis设计与实现-数据结构(建设进度15%)
  • Re50:读论文 Large Language Models Struggle to Learn Long-Tail Knowledge
  • ubuntu 查看5000端口是否开放
  • 2023 极术通讯-汽车“新四化”路上,需要一片安全山海
  • 享元模式学习
  • 艾泊宇产品战略:灵感于鬼屋,掌握打造卓越用户体验的关键要素
  • C#单例模式懒汉式与饿汉式
  • CentOS 8搭建WordPress
  • 原理Redis-ZipList
  • cp: can‘t stat ‘/usr/share/zoneinfo/Asia/Shanghai‘: No such file or directory
  • 【多线程 - 11、死锁】
  • 原理Redis-Dict字典
  • 【zabbix监控四】zabbix之监控tomcat服务报警
  • 【Java 进阶篇】Ajax 实现——JQuery 实现方式 `get` 与 `post`
  • Android studio run 手机或者模拟器安装失败,但是生成了debug.apk
  • golang[ssa callgraph] 获取调用图实战
  • Jmeter做接口测试
  • 【C++】基础语法(中)
  • Python顺序结构程序设计
  • c语言:矩阵交换
  • C/C++多级指针与多维数组
  • AIGC ChatGPT4对Gbase数据库进行总结
  • Python-----PyInstaller的简单使用
  • linux上交叉编译qt库
  • [内存泄漏][PyTorch](create_graph=True)
  • 【小爱学大数据】FlinkKafkaConsumer
  • 浅析RSA非对称加密算法
  • 「Verilog学习笔记」ROM的简单实现
  • 机器学习第10天:集成学习
  • Vue 2.0的源码目录设计