首页 > 其他分享 >38-2

38-2

时间:2023-10-05 20:22:35浏览次数:26  
标签:38 LNode int next LinkList NULL data

在带头结点的单链表L中,删除所有值为x的结点且值为x的结点不唯一,并释放空间

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

typedef struct node{
    int data;
    struct node *next;
}LNode,*LinkList;

void TailCreate(LinkList &L)
{
    L=(LinkList)malloc(sizeof(LNode));
    L->next=NULL;
    LNode *p,*r=L;
    int x;
    scanf("%d",&x);
    while(x!=999)
    {
        p=(LNode*)malloc(sizeof(LNode));
        p->data=x;
        p->next=NULL;
        r->next=p;
        r=p;
        scanf("%d",&x);
    }
}

void Delete(LinkList &L,int x)
{
    LNode *p=L->next;            //设置两个快慢指针是最正确的写法,防止删除尾结点时出错 
    LNode *r=L;
    LNode *s;
    while(p!=NULL)
    {
        if(p->data==x)
        {
            r->next=p->next;
            s=p;
            free(s);
            p=r->next;
        }
        else
        {
            p=p->next;
            r=r->next;
        }
    }
}

void displayList(LinkList L)
{
    LNode *p=L->next;
    while(p!=NULL)
    {
        printf("%d  ",p->data);
        p=p->next;
    }
}

int main()
{
    LinkList L;
    TailCreate(L);
    displayList(L);
    printf("\n");
    Delete(L,2);
    displayList(L);
    return 0;    
}

 

标签:38,LNode,int,next,LinkList,NULL,data
From: https://www.cnblogs.com/simpleset/p/17743860.html

相关文章

  • 38-1
    设计一个递归算法,删除不带头结点的单链表L中所有值为x的结点#include<stdio.h>#include<stdlib.h>typedefstructnode{intdata;structnode*next;}LNode,*LinkList;voidCreateList(LinkList&L)//头插法{L=NULL;intx;scanf("%d",&a......
  • 解决警告UserWarning: Glyph 38388 (\N{CJK UNIFIED IDEOGRAPH-95F4}) missing from
    这个警告是由于在绘图时使用了当前字体不支持的字符,通常出现在使用非英文字符(比如中文、日文等)时。为了解决这个问题,你可以尝试以下几种方法:方法一:选择支持中文的字体在绘图之前,指定一个支持中文的字体。例如,可以使用matplotlib.rcParams来指定字体,示例如下:importmatplotlib.pyplo......
  • 算法训练day23 LeetCode669.108.538.
    算法训练day23LeetCode669.108.538.669.修剪二叉搜索树题目669.修剪二叉搜索树-力扣(LeetCode)题解代码随想录(programmercarl.com)递归不能单纯地由根节点的值直接删除单值,需要继续判断子节点是否符合条件classSolution{public:TreeNode*trimBST(T......
  • 挑战程序设计竞赛 2.1章习题 POJ 2386 Lake Counting
    https://vjudge.net/problem/POJ-2386由于最近的降雨,水在农夫约翰的田地上聚集,在这片田地中,每个方块都被表示为一个NxM(1≤N≤100;1≤M≤100)的矩形。每个方块可以是水('W')或干地('.')。农夫约翰想弄清楚他的田地上形成了多少个池塘。池塘是由含有水的相连方块组成的集合,......
  • CF38F 题解
    blog。严重怀疑这题放到2023年至少*2000,评绿合情合理。首先是博弈论。然后数据范围很小。直接暴力DP啪的一下上去了,很快啊!这就抽象起来了。另一篇题解说不能暴力转移,但是你先预处理出来\(num(s)\),然后直接记忆化搜索,暴力枚举每一次操作的字符,这不就做完了吗。具体一点的......
  • Go每日一库之138:dive(Docker 镜像分析)
    什么是dive?用于探索Docker镜像、每一层中的内容以及发现缩小Docker/OCI镜像大小的方法的工具。安装divego get github.com/wagoodman/divedive特性按层分解Docker镜像可视化展示每一层变化分析镜像空间使用百分比快速构建分析镜像支持多种镜像源和容器引擎......
  • P9538最大和
    题目简化给你一个数,从它的个位到最高位进行操作,对于其每一位,你可以选择让他增加\(1\),减少\(1\)(如果当前位是\(0\),减\(1\)后会退位)或者不变。分析要使每一位的总和最大,我们可以对每一位进行判断。如果当前位不是\(0\)和\(9\),那么显然要加一。如:\(12\),最大总和即为每......
  • Windows开3389集合
    ###Windowsserver2003/Windowsxpnetstarttermserviceregadd"HKLM\SYSTEM\CurrentControlSet\Control\TerminalServer"/vfSingleSessionPerUser/tREG_DWORD/d0/fwmicpathwin32_terminalservicesettingwhere(__CLASS!="")call......
  • 视频融合平台EasyCVR接入华为ivs3800平台提示400报错的原因及解决方法
    青犀视频平台的开源EasyDarwin视频监控解决方案EasyCVR在复杂网络环境中表现出色。它能够将分散的各类视频资源集中管理,实现统一汇聚和整合。EasyCVR支持多种画面窗口播放模式,包括1、4、9、16个画面窗口,同时可以播放多路视频流,并且支持视频定时轮播功能。此外,EasyCVR还兼容多种播......
  • Codeforces Round 738 (Div. 2) A. Mocha and Math
    给一个数组\(a_1,a_2,\cdots,a_n\)。可以执行以下操作任意次:选择\(l,r(1\leql<r\leqn)\),对于任意\(l\leqi\leqr\),同时执行所有\(a_{l+i}=a_{l+i}\&a_{r-i}\)。希望经过若干次操作后,\(a\)的最小的最大值。性质:\(x\&y\leqmin(x,y)\)。......