王道数据结构2.2.3——16、判断一个单链表是否为另一个单链表的连续子序列

思路

同时遍历A和B两个单链表,

1、若ra指针和rb不一样,ra往后移一位,rb移到开头;

2、ra和rb相同,两个同时移一位,继续比较。

有两种情况要考虑到:A表比B表短、A表比B表长。所以最后判断条件为:rb是否到底。

代码

bool find_child(LinkList A, Linklist B){
    LNode *ra = A->next, *rb = B->next, *temp=A->next;
    while(ra != NULL && rb != NULL){
        // 如果两个数不同
        if(ra->data != rb->data) {
            ra = temp->next;
            temp = ra;
            rb = B->next;
        // 如果两个数相同
        } else {
            ra = ra->next;
            rb = rb->next;
        }
    }
    if(rb==NULL)
        return true;
    return false;
}

 

代码如下: ``` import java.nio.charset.StandardCharsets import org.apache.flink.streaming.connectors.hbase._ import org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer import org.apache.flink.api.scala._ import org.apache.flink.streaming.api.scala.{DataStream, StreamExecutionEnvironment} import org.apache.flink.streaming.util.serialization.SimpleStringSchema import org.apache.hadoop.hbase.{HBaseConfiguration, TableName} import org.apache.hadoop.hbase.client.Put import org.apache.hadoop.hbase.util.Bytes import org.apache.hadoop.hbase.client.ConnectionFactory case class KafkaData(key: String, value: String) object FlinkKafkaHbase { def main(args: Array[String]): Unit = { val env = StreamExecutionEnvironment.getExecutionEnvironment val kafkaProperties = new java.util.Properties() kafkaProperties.setProperty("bootstrap.servers", "localhost:9092") kafkaProperties.setProperty("group.id", "flink_group") val kafkaConsumer = new FlinkKafkaConsumer[String]("topic", new SimpleStringSchema(), kafkaProperties) val kafkaStream: DataStream[String] = env.addSource(kafkaConsumer) // Parse kafka data into case class val kafkaData: DataStream[KafkaData] = kafkaStream.map(s => { val values = s.split(",") KafkaData(values(0), values(1)) }) // Write kafka data into HBase val conf = HBaseConfiguration.create() conf.set("hbase.zookeeper.quorum", "localhost") val tableName = "kafka_table" val hbaseSink = new HBaseSinkFunction[KafkaData](tableName, (kafkaData: KafkaData) => { val put = new Put(Bytes.toBytes(kafkaData.key)) put.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("value"), kafkaData.value.getBytes(StandardCharsets.UTF_8)) put }, conf) kafkaData.addSink(hbaseSink) env.execute("Flink Kafka HBase Demo") } } ``` 注意:在运行此代码之前,您需要先部署并配置好Kafka和HBase,特别是在HBase中创建一个名为“kafka_table”的表,且包含一个名为“cf”的列族,以及定义一个名为“value”的列。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值