首页 > 其他分享 >单链表-案例-new

单链表-案例-new

时间:2024-04-03 13:46:02浏览次数:17  
标签:count index 单链 next current 案例 let new element

<!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <meta http-equiv="X-UA-Compatible" content="IE=edge">     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <title>Document</title> </head> <body>
    <script>
        class Node{             constructor(element){                 this.element = element                 this.next = null               }         }
        class LinkList {                         constructor(){                 this.count = 0                 this.head = null             }
            // push               push(element){                 const node = new Node(element)                               if(this.head === null) {                     this.head = node                   }else {                     let current = this.head                     while(current.next != null){                         current = current.next                       }                     current.next = node                 }                 this.count++             }
            // 指定位置删除             removeAt(index){
                if(index >= 0 && index < this.count){                     let current = this.head                     if(index === 0)  {                         this.head = this.head.next                     } else {                        let previous                           for(let i = 0; i < index; i++){                                 previous = current                             current = current.next                         }                         previous.next = current.next                     }                     this.count--                     return current.element                 }             }
            getNodeAt(index) {                 if(index >= 0 && index < this.count){                     let node = this.head                     for(let i = 0; i <index;i++){                         node = node.next                     }                     return node                 }                 return             }
            // 指定位置删除             removeAt2(index){
                if(index >= 0 && index < this.count){                     let current = this.head                     if(index === 0)  {                         this.head = this.head.next                     } else {                         let previous = this.getNodeAt(index - 1)                         current = previous.next                         previous.next = current.next                     }                     this.count--                     return current.element                 }             }
            equalFn(a,b){                 // return a === b                 return JSON.stringify(a) === JSON.stringify(b)                 // imumutable 判断两个元素是否相等             }
            //  返回指定数据索引             indexOf(element){                 let current = this.head                 for(let i = 0; i < this.count;i++){                     if(this.equalFn(element,current.element)){                         return i                     }                     current = current.next                 }                 return -1             }
            // 指定数据删除             remove(element){                 const index = this.indexOf(element)                 return this.removeAt(index)             }               //指定位置插入一个元素             insert(element,index){                               if(index >= 0 && index <= this.count){                     const node = new Node(element)                     if(index === 0){                         const current = this.head                         node.next = current                         this.head = node                     } else{                         // 找到指定位置数据  和 上级的数据                         let previous = this.getNodeAt(index - 1)                         const current = previous.next                         node.next = current                         prevent.next = node                     }                     this.count++                     return  true                  }                  return false
            }         }           // 案例一  判断回文 dad   假似真时真似假         function test(str){             const lowstr  = str.toLocaleLowerCase().split(' ').join('')             let dequeue = new LinkList()             for(let i=0;i<lowstr.length;i++){                 dequeue.push(lowstr[i])             }
            let isEqual = true             while(dequeue.count > 1){                 if(dequeue.removeAt(0) !== dequeue.removeAt(dequeue.count - 1)){                     isEqual = false                     break                 }             }
            return isEqual         }                 // let str = 'd a  A   d t d a a D'         // let str = '假似真时真似假'         // console.log( test(str))

        // 案例二 击鼓传花         // console.log(game(['kerwin','xiaoming','tiechui','gangdan','guladunzi'],7))           // function game(list,num){         //     let queue = new LinkList()         //     for(let i=0;i<list.length;i++){         //         queue.push(list[i])         //     }
        //     console.log('queue',queue,num)                     //     while(queue.count > 1){         //         for(let i=0;i<num;i++) {         //             queue.push(queue.removeAt(0))         //         }         //         console.log(queue.removeAt(0),'淘汰了')         //     }         //     return  queue.removeAt(0)         // }

        // 案例三 进制转换         function convert(decNumber,base){             let remStack = new LinkList()             let number = decNumber             let string = ''             let baseString = '0123456789ABCDEF'             while(number > 0){                 remStack.push(number%base)                 number = Math.floor(number/base)               }             while(!(remStack.count === 0)){                 string += baseString[remStack.removeAt(remStack.count-1)]             }               return  string         }  
        let res = convert(50,2)         console.log(res)
        let res2 = convert(50,8)         console.log(res2)
        let res3 = convert(500,16)         console.log(res3)

    </script>     </body> </html>

标签:count,index,单链,next,current,案例,let,new,element
From: https://www.cnblogs.com/eric-share/p/18112501

相关文章

  • 双端队列-案例-回文-new
    <!DOCTYPEhtml><htmllang="en"><head>  <metacharset="UTF-8">  <metahttp-equiv="X-UA-Compatible"content="IE=edge">  <metaname="viewport"content="width=d......
  • 循环列表-new
    <!DOCTYPEhtml><htmllang="en"><head>  <metacharset="UTF-8">  <metahttp-equiv="X-UA-Compatible"content="IE=edge">  <metaname="viewport"content="width=d......
  • 双向链表-new
    <!DOCTYPEhtml><htmllang="en"><head>  <metacharset="UTF-8">  <metahttp-equiv="X-UA-Compatible"content="IE=edge">  <metaname="viewport"content="width=d......
  • 集合set-new
    <!DOCTYPEhtml><htmllang="en"><head>  <metacharset="UTF-8">  <metahttp-equiv="X-UA-Compatible"content="IE=edge">  <metaname="viewport"content="width=d......
  • TPS上不去案例解析
    案例1.TPS原因上不去原因:磁盘满了分析:**磁盘的监控**iostat-xm5(以兆为单位5秒刷新一次) rs,ws每秒读写情况Await等待的时间Svctm磁盘服务时间百分比%util磁盘总占用率(sda盘%util超过了80%,那么sda盘到了瓶颈)解决:加硬件 2.TPS原因上不去原因:系统采用sprin......
  • 嵌入式案例
                      ......
  • 第十一篇【传奇开心果系列】Python自动化办公库技术点案例示例:深度解读Python自动化操
    传奇开心果博文系列系列博文目录Python自动化办公库技术点案例示例系列博文目录前言一、重要作用二、Python操作PDF文件转Word文档介绍三、提高效率示例代码四、保持一致性示例代码五、精确度与质量控制示例代码六、适应复杂需求示例代码七、可扩展性与与集成性示例代码......
  • 手写数字图片识别——DL 入门案例
    DeepLearningDemoofPrimary下面介绍一个入门案例,如何使用TensorFlow和Keras构建一个CNN模型进行手写数字识别,以及如何使用该模型对自己的图像进行预测。尽管这是一个相对简单的任务,但它涵盖了深度学习基本流程,包括:数据准备模型构建模型训练模型预测输入:importtenso......
  • SWUST OJ 952 单链表插入
    一、题目题目描述建立长度为n的单链表,在第i个结点之前插入数据元素data。输入第一行为自然数n,表示链式线性表的长度;第二行为n个自然数表示链式线性表各元素值;第三行为指定插入的位置i;第四行为待插入数据元素data。输出指定插入位置合法时候,输出插入元素后的链式线性......
  • DM数据库金融行业案例(水贴一波)
     最近没遇到啥有意思的案例,都是些很简单的案例,但是又好久没写过博客了,决定水一波帖子,保持更新。......