Javascript - 栈 和 单链表
最近在重温数据结构,于是写了一些代码玩玩,都是很初级的,表喷各位。。。。
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 - 栈 和 单链表的更多相关文章
- javascript数据结构之单链表
下面是用javascript实现的单链表,但是在输出的时候insert方法中存在问题,chrome的console报错说不能读取空的属性,调试了很久都没有通过,先在这里存着,以后再来修改一下. //数 ...
- python中栈的单链表实现
参考博客:https://www.cnblogs.com/stacklike/p/8284550.html 基于列表的简单实现 # 先进后出 # 以列表实现的简单栈 class SimpleStack ...
- C语言 - 栈和单链表的实现
单链表:linkList.h linkList.c #ifndef LINKLIST_H_INCLUDE #define LINKLIST_H_INCLUDE #include <Windows ...
- 设单链表中存放n个字符,试设计一个算法,使用栈推断该字符串是否中心对称
转载请注明出处:http://blog.csdn.net/u012860063 问题:设单链表中存放n个字符.试设计一个算法,使用栈推断该字符串是否中心对称,如xyzzyx即为中心对称字符串. 代码例 ...
- javascript算法-单链表
链表相比数组更具灵活性和扩展性.主要有节点数据以及指向节点的指针所构成. 链表中节点的实现[元素和指针]: let Node = function( element ){ this.element = ...
- 线性表:实现单链表和子类栈(Stack)及单向队列(Queue) [C++]
刚刚开始学习c++.之前c的内容掌握的也不多,基本只是一本概论课的程度,以前使用c的struct写过的链表.用python写过简单的数据结构,就试着把两者用c++写出来,也是对c++的class,以及 ...
- 单链表输出倒数第k个结点值(栈实现)
思路1:定义两个指针变量p和q,初始时均指向头节点的下一个节点(链表的第一个节点),p指针沿链表移动: 当p指针移动到第k个节点时,q指针开始与p指针同步移动, 当p指针移动到最后一个节点时,q指针所 ...
- 栈和队列----将单链表的每K个节点之间逆序
将单链表的每K个节点之间逆序 给定一个单链表的头节点head,实现一个调整链表的函数,使得每K 个节点之间逆序,如果最后剩下不够K 个节点,则不调整最后几个. 例如: 链表:1—>2—>3 ...
- java实现单链表、栈、队列三种数据结构
一.单链表 1.在我们数据结构中,单链表非常重要.它里面的数据元素是以结点为单位,每个结点是由数据元素的数据和下一个结点的地址组成,在java集合框架里面 LinkedList.HashMap(数组加 ...
随机推荐
- 诡异的too manany connections报错
问题现象: 应用重启,日志里面报错too manany connections 问题分析: 昨天割接,线上该业务线应用全部重启,一个有38个应用,每个应用3台服务器,每台服务器启动5个链接: num= ...
- Mysql --分区表(2)
分区类型 RANGE分区 range分区的表是利用取值范围将数据分成分区,区间要连续并且不能互相重叠,使用values less than操作符进行分区定义 LIST分区 LIST分区是建立离散的值列 ...
- 【6_100】Same Tree
Same Tree Total Accepted: 97481 Total Submissions: 230752 Difficulty: Easy Given two binary trees, w ...
- 关于RESTFUL API 安全认证方式的一些总结
常用认证方式 在之前的文章REST API 安全设计指南与使用 AngularJS & NodeJS 实现基于 token 的认证应用两篇文章中,[译]web权限验证方法说明中也详细介绍,一般 ...
- ASP.NET MVC请求处理管道生命周期的19个关键环节(13-19)
在上一篇"ASP.NET MVC请求处理管道生命周期的19个关键环节(7-12) ",体验了7-12关键环节,本篇继续. ⒀当请求到达UrlRoutingModule的时候,Url ...
- [ucgui] 对话框6——触屏位置简单例子
>_<:直接调用函数获得触屏位置: xPhys = GUI_TOUCH_GetxPhys(); /* Get the A/D mesurement result in x */ yPhys ...
- JavaScript函数绑定
一个简单的函数绑定 在JavaScript与DOM交互中经常需要使用函数绑定,定义一个函数然后将其绑定到特定DOM元素或集合的某个事件触发程序上,绑定函数经常和回调函数及事件处理程序一起使用,以便把函 ...
- 狗日的js的闭包
一.变量的作用域 要懂得闭包,起首必须懂得Javascript特别的变量作用域. 变量的作用域无非就是两种:全局变量和局部变量. Javascript说话的特别之处,就在于函数内部可以直接读取全局变量 ...
- paip.突破 网站 手机 验证码 的 破解 总结
paip.突破 网站 手机 验证码 的 破解 总结 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn ...
- TF Boys (TensorFlow Boys ) 养成记(六)
圣诞节玩的有点嗨,差点忘记更新.祝大家昨天圣诞节快乐,再过几天元旦节快乐. 来继续学习,在/home/your_name/TensorFlow/cifar10/ 下新建文件夹cifar10_train ...