首页 > 其他分享 >39-15

39-15

时间:2023-10-07 21:27:27浏览次数:34  
标签:LinkList 39 15 LNode next pb pa data

已知两个链表A,B分别表示两个集合,其元素递增排列,求A,B的交集,并存放在A中。

题目中没有给出释放B的结点,我的想法是只需要释放A中多余的结点,但是答案也让释放B的结点

#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 displayList(LinkList L)
{
    LNode *p=L->next;
    while(p!=NULL)
    {
        printf("%d  ",p->data);
        p=p->next;
    }
}

void Merge(LinkList &A,LinkList &B)
{
    LNode *pa=A->next,*pb=B->next;
    LNode *ra=A,*r;
    while(pa && pb)
    {
        if(pa->data<pb->data)
        {    
            ra->next=pa->next;
            free(pa);
            pa=ra->next;    
        }
        else if(pa->data>pb->data)
        {
            r=pb;
            pb=pb->next;
            free(r);    
        }
        else if(pa->data==pb->data)
        {
            ra=pa;
            pa=pa->next;
            r=pb;
            pb=pb->next;
            free(r);
        }
    }
    while(pa)
    {
        r=pa;
        pa=pa->next;
        free(r);
    }
    while(pb)
    {
        r=pb;
        pb=pb->next;
        free(r); 
    }
    ra->next=NULL;
    free(B);
}

int main()
{
    LinkList A,B;
    TailCreate(A);
    displayList(A);
    printf("\n");
    TailCreate(B);
    displayList(B);
    printf("\n");
    Merge(A,B);
    displayList(A);
    return 0;
}

 

标签:LinkList,39,15,LNode,next,pb,pa,data
From: https://www.cnblogs.com/simpleset/p/17747488.html

相关文章

  • 39-14
    设A,B是两个带头结点的单链表,其中元素递增有序,设计一个算法从A和B中的公共元素产生单链表C,要求不破坏A,B的结点不破坏A,B的结点,就是赋值操作,相当于重新创建了一个单链表#include<stdio.h>#include<stdlib.h>typedefstructnode{intdata;structnode*next;}LNo......
  • P3953 [NOIP2017 提高组] 逛公园
    Description策策同学特别喜欢逛公园。公园可以看成一张\(N\)个点\(M\)条边构成的有向图,且没有自环和重边。其中\(1\)号点是公园的入口,\(N\)号点是公园的出口,每条边有一个非负权值,代表策策经过这条边所要花的时间。策策每天都会去逛公园,他总是从\(1\)号点进去,从\(N\)......
  • CF506D Mr. Kitayuta's Colorful Graph
    好久没更新这个单题系列了,主要是最近没啥CF比赛空闲时间又少,今天忙里偷闲写了两个题这个题就比较典了,两点是否连通一般都是想到并查集维护,现在的问题是要对每种颜色的边把贡献算清楚很容易想到枚举所有颜色的边,每次求出所有连通分量后遍历一遍询问统计答案,这样正确性显然但复杂......
  • TypeError: Cannot read properties of undefined (reading '0')
    今天取请求返回值时报的一个错误,要取返回值中数组下标为零的数据,错误显示说未定义。检查之后发现要取的数据是请求返回的data中data,少嵌套了一层data导致数据为空报错。(返回数据的路径可以右键Copypropertypath,这样就不会错了)......
  • 【洛谷 P1739】表达式括号匹配 题解(栈)
    表达式括号匹配题目描述假设一个表达式有英文字母(小写)、运算符(+、-、*、/)和左右小(圆)括号构成,以@作为表达式的结束符。请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则输出YES;否则输出NO。表达式长度小于,左圆括号少于个。输入格式一行:表达式。输出格式一行:YES或NO......
  • 数据库 "test1007" 的 创建 失败。其他信息: 执行 Transact-SQL 语句或批处理时发生
    问题描述在我使用sqlServer登录名和密码验证登录时,出现了创建数据库错误的信息;问题解决只需要在使用Windows身份验证进行登录后,在服务器角色里面找到dbeavor,然后将我们的登录名添加进去,保存之后,重新启动;之后再使用sqlServer验证登录连接之后,就能够建立好数据库啦!......
  • 【二分图】CF1139E Maximize Mex 题解
    CF1139E翻译中有一句话:校长将会从每个社团中各选出一个人。就是一些人被分为一组,从每组中选一些人出来。这就很容易想到通过二分图的匹配。\(\text{mex}\)运算有一个显而易见的贪心:枚举每个值能否被匹配,第一个找不到的值就是答案。由于\(\text{mex}\)运算的值域与\(n\)......
  • 394. 字符串解码
    给定一个经过编码的字符串,返回它解码后的字符串。编码规则为:k[encoded_string],表示其中方括号内部的encoded_string正好重复k次。注意k保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始......
  • <class 'torch.nn.modules.conv.Conv1d'> torch.nn.Conv1d
     1、Conv1d定义classtorch.nn.Conv1d(in_channels,out_channels,kernel_size,stride=1,padding=0,dilation=1,groups=1,bias=True) 自然语言处理中一个句子序列,一维的,所以使用Conv1d,此时卷积核(没有batch_size,参数是共享的)除去chanel,也是一维的。 2、参数in_......
  • 151. 反转字符串中的单词
    LeetCode题目:https://leetcode.cn/problems/reverse-words-in-a-string/description/classSolution{public:voidreverse(string&s,intstart,intend){//翻转,区间写法:左闭右闭[]for(;start<end;start++,end--){swap(s[start],s[end]......