数据结构(Javascript版)

正在学习数据结构,学的是C语言版的,把里面的例子用Javascript重写了一遍,如果有什么错误的话欢迎提出(持续更新)。

一、线性表

  1. 一般线性表合并:

    

 1  function addList(la,lb){
 2             var arrA=[],arrB=[];    //声明两个线性表
 3
 4             //获取输入值
 5             arrA=la.value.split(‘,‘).map(function(item){return parseInt(item);});
 6             arrB=lb.value.split(‘,‘).map(function(item){return parseInt(item);});
 7
 8             for(let i=0;i<arrB.length;i++){//取arrB中的第i个数字与arrA比较
 9                 for(var j=0;j<arrA.length;j++){
10                     if(arrB[i]==arrA[j]){
11                         break;
12                     }
13                 }
14                 if(j==arrA.length){//如果arrA中不存在arrB[i]将arrB[i]插入arrA中
15                     arrA.push(arrB[i]);
16
17                 }
18             }
19
20             return arrA.join(‘,‘);
21         }

    2.有序线性表合并:

      

 1 function merge(la,lb){
 2             var arrA=la.value.split(‘,‘).map(function(item){return parseInt(item);});
 3             var arrB=lb.value.split(‘,‘).map(function(item){return parseInt(item);});
 4             var arrC=[],i=0,j=0;//arrC为合并后数组
 5             while((i<arrA.length)&&(j<arrB.length)){//当其中一个表遍历完则跳出循环
 6
 7                 if(arrA[i]<=arrB[j]){//依次摘取两表中较小的数插入到arrC中
 8
 9                     arrC.push(arrA[i]);
10                     i++;
11                 }else{
12                     console.log(‘b‘)
13                     arrC.push(arrB[j]);
14                     j++;
15                 }
16             }
17
18             while(i<arrA.length){//arrB已遍历完,将arrA剩下的依次插入到arrC中
19                 arrC.push(arrA[i]);
20                 i++;
21             }
22             while(j<arrB.length){//arrA已遍历完,将arrB剩下的依次插入到arrC中
23                 arrC.push(arrB[j]);
24                 j++;
25             }
26             return arrC.join(‘,‘);
27          }

二、栈和队列:

  1.数制转换:

    

function transform(n,d){//输入十进制数n和需要转换的进制d
           var stack=[];//声明一个数组模拟栈
           while(n){    //每次将n%d入栈,再将n替换成n/d
               var m;
               if(d===16){//如果是16进制进行匹配

                   switch(n%d){
                       case 10:m=‘a‘;break;
                       case 11:m=‘b‘;break;
                       case 12:m=‘c‘;break;
                       case 13:m=‘d‘;break;
                       case 14:m=‘e‘;break;
                       case 15:m=‘f‘;break;
                       default:m=n%d;break;
                   }

               }else{
                   m=n%d;
               }
               stack.push(m);
               n=Math.floor(n/d);    //javascript中‘/’为除法运算,并非取整
           }

           return stack.reverse().join(‘‘);
       }

  2.括号匹配:

    

 1 function check(str){//传入需要检测的字符串
 2         var flag=1,stack=[];
 3
 4         for(var i=0;i<str.length;i++){遍历字符串,检测每一个字符
 5
 6           switch(str[i]){
 7             case ‘[‘:
 8             case ‘(‘:
 9             case ‘{‘:stack.push(str[i]);break;//如果是[、(、{则入栈
10              //如果是]、)、}中的任意一个则判断栈顶元素是否与之匹配
11              //如果匹配则将栈顶元素出栈,否则报错,将flag设为0
12             case ‘)‘:if(stack[stack.length-1]==‘(‘){
13
14               stack.pop();
15               break;
16             }else{
17               flag=0;
18               break;
19             };
20             case ‘]‘:if(stack[stack.length-1]==‘[‘){ //如果不于栈顶元素相匹配则错误
21               stack.pop();
22               break;
23             }else{
24               flag=0;
25               break;
26             };
27             case ‘}‘:if(stack[stack.length-1]==‘{‘){
28               stack.pop();
29               break;
30             }else{
31               flag=0;
32               break;
33             }
34           }
35
36           if(!flag){break;};
37         }
38
39         return flag;
40        }
时间: 2024-10-18 03:13:00

数据结构(Javascript版)的相关文章

二叉堆-数据结构-JavaScript版

/** * Created by caoke on 2015/11/21. */ //二叉树 特点父节点比子节点小 var Tree2=function(){ //初始化 二叉树的子元素 this.children=[]; } Tree2.prototype={ size:0, push:function(x){ var arr=this.children //自己节点的编号 var i=arr.length while(i>0){ //父节点的编号 var p=parseInt((i-1)/2

【数据结构的JavaScript版实现】data-struct-js的npm包初版作成

[数据结构的JavaScript版实现]data-struct-js的npm包初版作成 码路工人 CoderMonkey [数据结构的JavaScript版实现] 拖了这么久,终于趁着春节假期把初版(即计划的内容)完成了. [npm](https://www.npmjs.com/) 上搜 data-struct-js 这个 npm 包主要侧重数据结构, 构建了基本数据结构的概念, 实现了常用的几个方法, 比如图(有向图/无向图), 仅有实现广度优先遍历和深度优先遍历, 而其它的更多偏向于算法方面

【JavaScript】【算法】JavaScript版排序算法

JavaScript版排序算法:冒泡排序.快速排序.插入排序.希尔排序(小数据时,希尔排序会比快排快哦) 1 //排序算法 2 window.onload = function(){ 3 var array = [0,1,2,44,4, 4 324,5,65,6,6, 5 34,4,5,6,2, 6 43,5,6,62,43, 7 5,1,4,51,56, 8 76,7,7,2,1, 9 45,4,6,7,8]; 10 //var array = [4,2,5,1,0,3]; 11 array

javascript日历控件——纯javascript版

平时只有下班时间能code,闲来写了个纯javascript版.引用该calendar.js文件,然后给要设置成日历控件的input的id设置成calendar,该input就会变成日历控件. <!doctype html> <html> <head> <meta charset="utf-8"> <title>日历控件</title> <script src="js/calendar.js&quo

JavaScript版MD5应用

如果使用Java为一个字符串进行MD5操作,我想轻而易举:可是如果要在客户端为网页中字符串进行MD5操作又该怎么做呢? 代码1--为字符串等进行MD5操作的js文件(md5.js): /* * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message * Digest Algorithm, as defined in RFC 1321. * Version 2.1 Copyright (C) Paul Johns

Javascript版选择下拉菜单互移且排序

效果图如下: 代码如下: <html> <head> <title>Javascript版选择下拉菜单互移且排序</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head> <body> <p>选定一项或多项然后点击添加或移除(按住shift或ctrl可以多选),

关于时间的操作(JavaScript版)——页面显示格式:年月日 上午下午 时分秒 星期

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

javascript版万年历

1 <!DOCTYPE html PUBLIC "-//W3C//Dtd XHTML 1.0 transitional//EN" "http://www.w3.org/tr/xhtml1/Dtd/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="

关于时间的操作(JavaScript版)——年月日三级联动(默认显示系统时间)

这个功能是大学时自己使用纯JavaScript写的,没有借助Jquery,呵呵呵,看起来有点繁琐,可是在当时依稀的记得功能实现后自己好好的高兴一把了呢,从现在来看那时候的自己是多么的幼稚.多么的无知: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>年月日三级联动(默认显示系统时间)</title> <

关于时间的操作(JavaScript版)——年月日三级级联(默认依次显示请选择年、请选择月和请选择日)

这篇博客和前一篇博客基本相同,只是显示的默认值不同: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>年月日三级级联(默认依次显示请选择年.请选择月和请选择日)</title> <meta http-equiv="content-type" content="text/ht