資料結構(Javascript版)

來源:互聯網
上載者:User

標籤:map   有序   fun   字串   div   出棧   存在   遍曆   log   

正在學習資料結構,學的是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設為012             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        }

 

資料結構(Javascript版)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.