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


李俊才
CSDN:jcLee95
邮箱:291148484@163.com

专题目录:https://blog.csdn.net/qq_28550263/article/details/115718216


【导读】:本节在前文的基础删为我们的单链表类添加统计某个元素在该链表中出现次数的方法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

符合我们的预期。

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

  1. TypeScript算法专题 - blog2 - 单链表节点的索引、结点删除与链表反转

    TypeScript算法专题 - [单链表2] 单链表节点的索引.结点删除与链表反转 李俊才 CSDN:jcLee95 邮箱:291148484@163.com 专题目录:https://blog.c ...

  2. TypeScript算法专题 - blog1.基于TypeScript语言的单链表实现

    TypeScript算法专题 - 基于TypeScript语言的单链表实现 李俊才 CSDN:jcLee95 邮箱:291148484@163.com 专题目录:https://blog.csdn.n ...

  3. TypeScript算法专题 - [双链表1] - 双链的概念及其实现

    TypeScript算法专题 - [双链表1] 双链的概念及其实现 李俊才 CSDN:jcLee95 邮箱:291148484@163.com 专题目录:https://blog.csdn.net/q ...

  4. TypeScript算法专题 - blog3 - 对TypeScript链表实现中的一些问题总结与改进

    TypeScript算法专题 - [单链表3] 链表的合并 以及对TypeScript链表实现中的一些问题总结与改进 李俊才 CSDN:jcLee95 邮箱:291148484@163.com 专题目 ...

  5. TypeScript算法专题 - blog5 - 单链表节点的`任意k个分组反转`的实现

    TypeScript数据结构与算法专题 - [单链表5] 单链表节点的`任意分组反转`实现 李俊才 CSDN:jcLee95 邮箱:291148484@163.com 专题目录:https://blo ...

  6. TypeScript算法专题 - blog4 - 单链表节点的两-两翻转(两两一组逆序)

    TypeScript数据结构与算法专题 - [单链表4] 单链表节点的`两-两`反转的实现 李俊才 CSDN:jcLee95 邮箱:291148484@163.com 专题目录:https://blo ...

  7. 算法练习day10——190328(根据指定值划分单链表、复制含有rand指针节点的链表、两个单链表相交)

    1.将单向链表按某值划分成左边小. 中间相等. 右边大的形式 [题目] 给定一个单向链表的头节点head, 节点的值类型是整型, 再给定一个整数pivot. 实现一个调整链表的函数, 将链表调整为左部 ...

  8. 链表问题14——在单链表种删除指定值的节点(方法二)

    题目 题目可参考上一篇文章,删除链表中的指定值 思路 方法二:不用任何容器,直接调整.时间复杂度O(N),空间复杂度O(1) 因为最后计划返回链表头,所以先遍历链表按顺序找到第一个不等于num的节点作 ...

  9. 统计一个子字符串在另一个字符串中出现的次数

    统计一个长度为n的字符串在另外一个字符串中出现的次数. 例如:假定输入字符串为helloworldhelloworld,子字符串为he,则应输出2 代码如下: #include <stdio.h ...

最新文章

  1. 牛客网多校训练第一场 B - Symmetric Matrix(dp)
  2. 加速产业AI化!浪潮提出”元脑“生态计划,要用计算力+生态成就行业AI大脑...
  3. 游戏盾正式发布:撬动DDoS攻防的天平
  4. C# 3.X -- the newest features
  5. Docker中部署mysql后SpringBoot连接时提示表不存在(修改表名忽略大小写)
  6. 深度解说阿里云 Serverless Kubernetes
  7. 复制Linux虚拟机后的网卡问题解决
  8. 信息安全工程师笔记-国产密码算法(国密)概念
  9. 鸿蒙HI3516-HAP的编译打包和安装
  10. Docker学习总结(19)——Google开源的容器集群管理系统Kubernetes介绍
  11. 简明python教程:数据结构
  12. 用BeautifulSoup爬取豆瓣妹子的图片
  13. cad导出pdf_MxCAD云图DWG转PDF
  14. AI上推荐 之 FM和FFM(九九归一)
  15. MySQL设计一个图书馆数据库_设计一个图书馆数据库
  16. 小程序获取oppenid
  17. 在工业生产安全管理中,人员定位系统能做什么?
  18. Element-UI中打开本地文件
  19. 一秒解决笔记本无法连接网络问题——解决笔记本插网线,显示未识别网络。
  20. SGMII光模块知识百科

热门文章

  1. Mac下IDEA快捷键操作
  2. 批标准化 tf.keras.layers.BatchNormalization 中的trainable参数与training参数比较
  3. 对 BatchNormalization 中 Internal Convariate Shift 的理解
  4. union和union all区别
  5. oracle 创建一个用户,只能访问指定的对象
  6. 三级联动(ajax)
  7. 【C++】继承时构造函数和析构函数
  8. tempdb 数据文件暴涨
  9. 使用NSOperation实现异步下载
  10. MSN登录问题:Error 80072ee7