最近在重温数据结构,于是写了一些代码玩玩,都是很初级的,表喷各位。。。。

function Stack() {
this.dataStore = [];
this.top = 0;
} Stack.prototype = {
length: function () {
return this.top;
}, push: function (element) {
this.dataStore[this.top++] = element;
return this.top;
}, pop: function () {
return this.dataStore[--this.top];
}, peek: function () {
return this.dataStore[this.top - 1];
}, clear: function () {
return this.top = 0;
}
}; var stack = new Stack();
console.log("length:" + stack.length());
stack.push("huangjacky");
stack.push("fiend");
console.log("length:" + stack.length());
while (stack.length() > 0) {
var s = stack.pop();
console.log("element:" + s);
}
console.log("length:" + stack.length()); function Node(element) {
this.element = element;
this.next = null;
} function LinkList() {
this.head = new Node("head");
}
LinkList.prototype = {
insert: function (element, after) {
var s = new Node(element);
if (after == undefined) { //如果没有指定after,那么就直接插入到链表的最前面
s.next = this.head.next;
this.head.next = s;
return true;
} else {
var node = this.head;
while (node != null) {
if (node.element == after) {
s.next = node.next;
node.next = s;
return true;
}
node = node.next;
}
}
return false;
}, remove: function (element) {
var node = this.head;
var preNode = null;
while (node != null) {
if (node.element == element) {
preNode.next = node.next;
return true;
}
preNode = node;
node = node.next;
}
return false;
}, find: function (element) {
var node = this.head;
while (node != null) {
if (node.element == element) {
break;
}
node = node.next;
}
return node;
}, toString: function () {
var s = "";
var node = this.head;
while (node != null) {
if (node.next == null) {
s += node.element;
} else {
s += node.element + " --> ";
}
node = node.next;
}
return s;
}
};
var l = new LinkList();
l.insert("huangjacky");
l.insert("fiend", "huangjacky");
l.insert("jackyhuang", "fiend");
l.insert("abc");
var s = l.find("huangjacky");
if (s) {
console.log("next to huangjacky is :" + s.next.element);
}
l.remove("fiend");
console.log("linklist is :" + l.toString());

  

Javascript - 栈 和 单链表的更多相关文章

  1. javascript数据结构之单链表

    下面是用javascript实现的单链表,但是在输出的时候insert方法中存在问题,chrome的console报错说不能读取空的属性,调试了很久都没有通过,先在这里存着,以后再来修改一下. //数 ...

  2. python中栈的单链表实现

    参考博客:https://www.cnblogs.com/stacklike/p/8284550.html 基于列表的简单实现 # 先进后出 # 以列表实现的简单栈 class SimpleStack ...

  3. C语言 - 栈和单链表的实现

    单链表:linkList.h linkList.c #ifndef LINKLIST_H_INCLUDE #define LINKLIST_H_INCLUDE #include <Windows ...

  4. 设单链表中存放n个字符,试设计一个算法,使用栈推断该字符串是否中心对称

    转载请注明出处:http://blog.csdn.net/u012860063 问题:设单链表中存放n个字符.试设计一个算法,使用栈推断该字符串是否中心对称,如xyzzyx即为中心对称字符串. 代码例 ...

  5. javascript算法-单链表

    链表相比数组更具灵活性和扩展性.主要有节点数据以及指向节点的指针所构成. 链表中节点的实现[元素和指针]: let Node = function( element ){ this.element = ...

  6. 线性表:实现单链表和子类栈(Stack)及单向队列(Queue) [C++]

    刚刚开始学习c++.之前c的内容掌握的也不多,基本只是一本概论课的程度,以前使用c的struct写过的链表.用python写过简单的数据结构,就试着把两者用c++写出来,也是对c++的class,以及 ...

  7. 单链表输出倒数第k个结点值(栈实现)

    思路1:定义两个指针变量p和q,初始时均指向头节点的下一个节点(链表的第一个节点),p指针沿链表移动: 当p指针移动到第k个节点时,q指针开始与p指针同步移动, 当p指针移动到最后一个节点时,q指针所 ...

  8. 栈和队列----将单链表的每K个节点之间逆序

    将单链表的每K个节点之间逆序 给定一个单链表的头节点head,实现一个调整链表的函数,使得每K 个节点之间逆序,如果最后剩下不够K 个节点,则不调整最后几个. 例如: 链表:1—>2—>3 ...

  9. java实现单链表、栈、队列三种数据结构

    一.单链表 1.在我们数据结构中,单链表非常重要.它里面的数据元素是以结点为单位,每个结点是由数据元素的数据和下一个结点的地址组成,在java集合框架里面 LinkedList.HashMap(数组加 ...

随机推荐

  1. CALayer图层的基本介绍

    掌握 ● CALayer的基本属性 ● CALayer和UIView的关系 ● position和anchorPoint的作⽤用 CALayer ● 在iOS中,你能看得见摸得着的东西基本上都是UIV ...

  2. ubuntu wireshark 没有接口

    There are no interfaces on which a capture can be done 解决方法: Open a terminal by pressing Ctrl+Alt+T  ...

  3. React和ES6(二)ES6的类和ES7的property initializer

    React与ES6系列: React与ES6(一)开篇介绍 React和ES6(二)ES6的类和ES7的property initializer React与ES6(三)ES6类和方法绑定 React ...

  4. 导入module

    1.http://blog.csdn.net/cryssdut/article/details/50357876 2.直接把lib复制黏贴到项目里,无法直接用:需要在 settings.gradle中 ...

  5. Unix时间戳与C# DateTime时间类型互换

    Unix时间戳最小单位是秒,开始时间为格林威治标准时间1970-01-01 00:00:00ConvertIntDateTime方法的基本思路是通过获取本地时区表示Unixk开始时间,加上Unix时间 ...

  6. SQLSERVER迁移工具 SSMA5.3发布

    SQLSERVER迁移工具 SSMA5.3发布 官方论坛/博客: SQL Server Migration Assistant (SSMA) Team's Blog Welcome to SQL Se ...

  7. 在ios中使用第三方类库

    在项目开发中经常会用到一些第三方类库,通常有两种方法来做到:一种方法是直接把所有的.h和.m文件复制到项目中:另一种方法是把.xcodeproj拖到项目中生成静态链接库并引用. 方法一:直接复制所有源 ...

  8. 跟我一起学WCF(1)——MSMQ消息队列

    一.引言 Windows Communication Foundation(WCF)是Microsoft为构建面向服务的应用程序而提供的统一编程模型,该服务模型提供了支持松散耦合和版本管理的序列化功能 ...

  9. [MSSQL2012]CUME_DIST函数

    CUME_DIST函数以某列作为基准,计算其它行相对于基准行数据的比例.差距比例,比较容易理解 先看下测试数据 DECLARE @TestData TABLE(     ID INT IDENTITY ...

  10. VS .sln .csproj 文件的右键编译

    背景:VS很好很强大,但太费系统资源了,尤其是在虚拟机在里面装VS的时候更是如此.有时用vi编辑了源代码后,不想开VS IDE编译,但每次打开VS命令行,再切换到工程所在目录,然后手动敲命令太麻烦了. ...