TypeScript算法专题 - blog9 - 单链表统计 : 返回指定值在单链表结点中的出现次数

简介: TypeScript算法专题 - blog9 - 单链表统计 : 返回指定值在单链表结点中的出现次数

TypeScript数据结构与算法专题 -
[单链表9] 单链表统计 :
返回指定值在单链表结点中的出现次数


【导读】:本节在前文的基础删为我们的单链表类添加统计某个元素在该链表中出现次数的方法count()

这个功能比较简单,只要对列表的结点从头到尾进行一次遍历,在每到一个结点处比较该结点数据域中的内容与给定内容是否一致。如果一致则以为着该节点数据域中存储的数据匹配成功,表示统计出现次数的计数器加1。

它看起来实现后时这个样子的:

【code-1】

count(x:any):number{
    /**
     * 返回链表中结点的值域存储内容与x内容相同的结点的个数
     * @param x {any} 用于比较的数据
     * @returns counter {number} 被统计对象在链表数据域中出现的次数
     */
    let counter = 0;
    let pointer:Lnode = this.head.next;
    while(pointer){
        if(pointer.data == x){      // 当结点数据域 与 x 内容相匹配时
                counter++;          // 则技术
        };
        pointer = pointer.next;
    };
    return counter;
};

我们来试一试效果吧,给出下面的测试:

【test-1】

import * as slist from "./LinkList/singly_linked_list_02"    // 导入单链表
let a = [1,1,2,4,5,7,5,6]
let list = new slist.LinkList(a);
console.log(list.count(1));

Out[]:

2

好像时符合预期的。不过,我们对上述测试代码略做修改:

【test-2】

import * as slist from "./LinkList/singly_linked_list_02"    // 导入单链表
let a = [1,1,2,4,5,7,5,6,"1"]
let list = new slist.LinkList(a);
console.log(list.count(1));

Out[]:

3

发现结果为3。其原因在于在语句pointer.data == x1:number"1":string认为是相等的。而在很多时候,我们是希望对类型进行严格区别的。为了达到区别的目的,可以,默认使用一个较为严格的比较模式对类型进行比较。实现代码如下:

【code-2】

count(x:any,strict:boolean=true):number{
    /**
     * 返回链表中结点的值域存储内容与x内容相同的结点的个数
     * @param x {any} 用于比较的数据
     * @param strict? {boolean} 是否开启严格模式,如果不开启严格模式在统计时相同的不同类型
     * 可能同时被统计,如数字 1 和字符串 "1"
     * @returns counter {number} 被统计对象在链表数据域中出现的次数
     */
    let counter = 0;
    let pointer:Lnode = this.head.next;
    while(pointer){
        if(pointer.data == x){
            if(!strict){                 // 不严格判断类型模式
                counter++;
            }
            else{                        // 严格判断类型模式
                if(typeof(pointer.data)==typeof(x)){
                    counter++;
                }
            }
        };
        pointer = pointer.next;
    };
    return counter;
};

现在我们再来试试运行的效果:

【test-3】

import * as slist from "./LinkList/singly_linked_list_02"    // 导入单链表模块2
let a = [1,1,2,4,5,7,5,5,"1",3,4,7,7,3,2,4]
let list = new slist.LinkList(a);
console.log(list.count(1,false));     // 不严格校验类型
console.log(list.count(1,true));      // 严格校验类型

Out[]:

3
2

符合我们的预期。

目录
相关文章
|
算法
【❤️算法笔记❤️】-每日一刷-19、删除链表的倒数第 N个结点
【❤️算法笔记❤️】-每日一刷-19、删除链表的倒数第 N个结点
340 1
|
存储 算法 Java
算法系列之递归反转单链表
递归反转链表的基本思路是将当前节点的next指针指向前一个节点,然后递归地对下一个节点进行同样的操作。递归的核心思想是将问题分解为更小的子问题,直到达到基本情况(通常是链表末尾)。
528 5
算法系列之递归反转单链表
|
存储 监控 算法
基于 PHP 语言的滑动窗口频率统计算法在公司局域网监控电脑日志分析中的应用研究
在当代企业网络架构中,公司局域网监控电脑系统需实时处理海量终端设备产生的连接日志。每台设备平均每分钟生成 3 至 5 条网络请求记录,这对监控系统的数据处理能力提出了极高要求。传统关系型数据库在应对这种高频写入场景时,性能往往难以令人满意。故而,引入特定的内存数据结构与优化算法成为必然选择。
352 3
|
JavaScript 算法 前端开发
JS数组操作方法全景图,全网最全构建完整知识网络!js数组操作方法全集(实现筛选转换、随机排序洗牌算法、复杂数据处理统计等情景详解,附大量源码和易错点解析)
这些方法提供了对数组的全面操作,包括搜索、遍历、转换和聚合等。通过分为原地操作方法、非原地操作方法和其他方法便于您理解和记忆,并熟悉他们各自的使用方法与使用范围。详细的案例与进阶使用,方便您理解数组操作的底层原理。链式调用的几个案例,让您玩转数组操作。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
算法 程序员 索引
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
栈的基本概念、应用场景以及如何使用数组和单链表模拟栈,并展示了如何利用栈和中缀表达式实现一个综合计算器。
364 1
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
|
JSON 算法 数据挖掘
基于图论算法有向图PageRank与无向图Louvain算法构建指令的方式方法 用于支撑qwen agent中的统计相关组件
利用图序列进行数据解读,主要包括节点序列分析、边序列分析以及结合节点和边序列的综合分析。节点序列分析涉及节点度分析(如入度、出度、度中心性)、节点属性分析(如品牌、价格等属性的分布与聚类)、节点标签分析(如不同标签的分布及标签间的关联)。边序列分析则关注边的权重分析(如关联强度)、边的类型分析(如管理、协作等关系)及路径分析(如最短路径计算)。结合节点和边序列的分析,如子图挖掘和图的动态分析,可以帮助深入理解图的结构和功能。例如,通过子图挖掘可以发现具有特定结构的子图,而图的动态分析则能揭示图随时间的变化趋势。这些分析方法结合使用,能够从多个角度全面解读图谱数据,为决策提供有力支持。
791 0
|
算法 安全 数据库
基于结点电压法的配电网状态估计算法matlab仿真
**摘要** 该程序实现了基于结点电压法的配电网状态估计算法,旨在提升数据的准确性和可靠性。在MATLAB2022a中运行,显示了状态估计过程中的电压和相位估计值,以及误差随迭代变化的图表。算法通过迭代计算雅可比矩阵,结合基尔霍夫定律解决线性方程组,估算网络节点电压。状态估计过程中应用了高斯-牛顿或莱文贝格-马夸尔特法,处理量测数据并考虑约束条件,以提高估计精度。程序结果以图形形式展示电压幅值和角度估计的比较,以及估计误差的演变,体现了算法在处理配电网状态估计问题的有效性。
|
算法 索引
【初阶数据结构篇】单链表算法题进阶
深拷贝应该正好由 n 个全新节点组成,其中每个新节点的值都设为其对应的原节点的值。
160 0
|
存储 算法 Java
LeetCode初级算法题:反转链表+统计N以内的素数+删除排序数组中的重复项Java详解
LeetCode初级算法题:反转链表+统计N以内的素数+删除排序数组中的重复项Java详解
325 0
|
算法 程序员 数据处理
【数据结构与算法】使用单链表实现队列:原理、步骤与应用
【数据结构与算法】使用单链表实现队列:原理、步骤与应用