首页 > 其他分享 >39-16

39-16

时间:2023-10-07 22:02:46浏览次数:28  
标签:pre LinkList 39 LNode 16 next pb pa

两个整数序列存放在单链表A,B 中,设计一个算法,判断B是否是A的连续子序列

算法思想类似于朴素匹配算法。

遇到不匹配的,A需要记录与B开始匹配的位置(pre指针的作用),从该位置的下一个结点开始匹配,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 Judge(LinkList A,LinkList B)            
{
    LNode *pa=A->next,*pb=B->next,*pre=pa;
    while(pa && pb)
    {        
        if(pa->data==pb->data)
        {
            pa=pa->next;
            pb=pb->next;
        }
        else
        {
            pre=pre->next;
            pa=pre;
            pb=B->next;
        }
    }
    if(pb==NULL)
    {
        printf("yes");
        return;
    }
    else
    {
        printf("No");
        return;
    }
}

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

 

标签:pre,LinkList,39,LNode,16,next,pb,pa
From: https://www.cnblogs.com/simpleset/p/17747586.html

相关文章

  • 39-15
    已知两个链表A,B分别表示两个集合,其元素递增排列,求A,B的交集,并存放在A中。题目中没有给出释放B的结点,我的想法是只需要释放A中多余的结点,但是答案也让释放B的结点#include<stdio.h>#include<stdlib.h>typedefstructnode{intdata;structnode*next;}LNode,*Li......
  • 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比赛空闲时间又少,今天忙里偷闲写了两个题这个题就比较典了,两点是否连通一般都是想到并查集维护,现在的问题是要对每种颜色的边把贡献算清楚很容易想到枚举所有颜色的边,每次求出所有连通分量后遍历一遍询问统计答案,这样正确性显然但复杂......
  • ThbinBook16+ Win10 蓝屏崩溃的解决思路
    背景近日,手头的联想笔记本频繁蓝屏重启,严重时一天三次,持续了近一周。错误代码基本均为:DRIVER_IRQL_NOT_LESS_OR_EQUAL​‍笔记本型号:ThinkBook16G4+ARA(21D1)操作系统:Win10排障思路重装驱动首先google和百度检索了一番错误代码,基本都指向驱动问题。‍上官网重新下载......
  • ThbinBook16+ Win10 蓝屏崩溃的解决思路
    背景近日,手头的联想笔记本频繁蓝屏重启,严重时一天三次,持续了近一周。错误代码基本均为:DRIVER_IRQL_NOT_LESS_OR_EQUAL​‍笔记本型号:ThinkBook16G4+ARA(21D1)操作系统:Win10排障思路重装驱动首先google和百度检索了一番错误代码,基本都指向驱动问题。‍上官网重新下载......
  • Ynoi2012 NOIP2016 人生巅峰
    Day\(\text{XXX}\)。注意到修改是易于复合的立方操作,而且值域非常小,所以可以直接\(O(v\logm)\)预处理出对每个\(i\in[0,v)\)操作了\(2^{j}\lem\)次的结果,维护出每一位被修改了多少次,查询某一位的值直接倍增\(O(\logm)\)即可。然后这个限制很弱,因为如果区间内有重复......
  • TypeError: Cannot read properties of undefined (reading '0')
    今天取请求返回值时报的一个错误,要取返回值中数组下标为零的数据,错误显示说未定义。检查之后发现要取的数据是请求返回的data中data,少嵌套了一层data导致数据为空报错。(返回数据的路径可以右键Copypropertypath,这样就不会错了)......
  • 【洛谷 P1739】表达式括号匹配 题解(栈)
    表达式括号匹配题目描述假设一个表达式有英文字母(小写)、运算符(+、-、*、/)和左右小(圆)括号构成,以@作为表达式的结束符。请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则输出YES;否则输出NO。表达式长度小于,左圆括号少于个。输入格式一行:表达式。输出格式一行:YES或NO......
  • 编写脚本,使用for和while分别实现192.168.0.0/24网段内,地址是否能够ping通,若ping通则输
    for方法:[14:20:07root@centos8~]#catping_for.sh#!/bin/bash​#================================================================# Copyright(C)2021IEucdInc.Allrightsreserved.## 文件名称:ping_for.sh# 创建者:TanLiang# 创建日期:2021年10月17日# ......