数据结构笔记

什么是数据结构
跟语言无关,跟实现无关

举例:

队列、栈、Hash(表)、树

队列(queue):先进先出(FIFO)

例:
取号

<button id=takeNumber>取号</button>
<div id="output"></div>
<div id="screenDiv"></div>

var queue = []

function 取号 (name){
    let number = Math.round(Math.random() * 10000)
    queue.push(number)
    //output.textContent = 你取的号码是${number},
    //你前面有 ${queue.length -1}个人
    return number
}
function 取号(){
    //if(queue.length === 0){
    return
    }
    let theNumber = queue.shift()
    screenDiv.textContent = '请 ${theNumber} 到服务台'
    retun theNumber
}

//takeNumber.onclick = function(){
    取号()
}
//setInterval(function(){
    叫号()
},3000)

栈(stack):先进后出

<button id=button1>放书</button>
<button id=button2>取书</button>
<div id="output"></div>
<div id="screenDiv"></div>

var 箱子 = []

function 放书(name){
    箱子.push(name)
    output.textContent = name + '已放入箱子'
    return
}

function 取书(){
    if( 箱子.length === 0)
    output.textContent = '没书'
    return
}
var theBook = 箱子.pop()
    output.textContent = theBook + '已取出'
    return theBook
}

button1.onclick = function(){
    放书(Math.random())
}
button2.onclick = function(){
    取书()
}

Hash 哈希(表)

给我一个东西我给你另外一个东西

(1)用Hash找出字母出现的次数(已知参数的情况下)

var string = "I am Frank,I am 18 years old"

var hash = {}

for(var i = 0;i<string.length;i++){
    var letter = string[i]
    if(letter in hash){
        hash[letter] += 1
    }else{
        hash[letter] = 1
    }
}

console.log(hash)

用Hash找出字母出现的次数(不知参数的情况下)

function sort(string){
var str={};
for(var i=0;i<string.length;i++){
    if(string[i] in str){
    str[string[i]]+=1;
    }else{
    str[string[i]]=1;
    }
}
return str;
}
console.log(sort("hello"));

(2)排序(桶排序)已知参数

var array = [2,11,3,12,4,5,12]

var hash = []//每个数字出现几次
//写hash
for(var i = 0; i<array.length; i++){
    var number = array[i]
    if(number in hash){
        hash[number]+= 1
    }else{
    hash[number] = 1
    }
}

//读hash

var result = []
for(var i=0;i<hash.length; i++){
    if(hash[i] !== undefined){
        for(var iCount = 0; iCount < hash[i]; iCount ++){
            result.push(i)
        }
    }
}
console.log(result)

排序(桶排序)不知参数

function bucketsort(array){
    var buckets=[];
    var result = [];
    for(var i=0;i<array.length;i++){
        if([array[i]] in buckets){
            buckets[array[i]]+=1;
        }else{
            buckets[array[i]]=1;
        }
    }
    for(var a=0;a<buckets.length; a++){
        if(buckets[a] !== undefined){
            for(var Count = 0; Count < buckets[a]; Count ++){
                result.push(a);
            }
        }
    }
        return result;
}
console.log(bucketsort([21,15,19,35,62,0,1]));

树:

添加生物

var root = {
    name:'生物',
    children:[]
}

function addChild(parent,child){
    parent.children.push(child)
}
addChild(root,{
    name:'动物',
    children:[]
})

addChild(root,{
    name:'植物',
    children:[]
})

addChild(root.children[0],{
    name:'哺乳动物',
    children:[]
})
addChild(root.children[0],{
    name:'爬行动物',
    children:[]
})
addChild(root.children[0],{
    name:'两栖动物',
    children:[]
})
addChild(root.children[1],{
    name:'花草',
    children:[]
})
addChild(root.children[1],{
    name:'树木',
    children:[]
})

console.log(root)

遍历

function travelTree(node){
    console.log(node.name)
    for(var i= 0; i<node.children.length; i++){
        travelTree(node.children[i])
    }
}
travelTree(root)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容

  • 1 数据2 算法3 线性表4 栈5 队列6 串朴素模式匹配算法 -子串的定位操作:从主串中找到子串KMP模式匹配算...
    oldSix_Zhu阅读 1,484评论 0 4
  • 1 数据结构基本概念 1.1 数据结构分类 1. 逻辑结构 集合结构 数据元素间的关系是“属于同一个集合”。集合是...
    JaiUnChat阅读 1,425评论 0 1
  • 1、每个程序所花费的运行次数称为该程序的“时间复杂度”。判断该程序执行效率是否良好。 2、 3、内存的位置: 以行...
    EdwardSelf阅读 776评论 0 1
  • 前面说过,数据结构的类型大方向上来说分为线性结构和非线性结构,下面要说的线性表就是线性结构的一种。(复习一下,前面...
    泡泡不爱吃芹菜阅读 854评论 0 2
  • 教练说: 我的工作是幼师, 我要把你们这些成年人身上的种种盔甲一一卸下,让你们回复到童年时期的纯真和灿烂,单纯,没...
    W南茜阅读 469评论 0 0