【分享】JS超精简实现链表!拜请各位JAVA C# 大牛指点
单向链表 百度百科:http://baike.baidu.com/view/549479.htm?fr=ala0_1
最近家里来了个高手,他是学JAVA的。正在努力跟他学习!
如果有对链表的误读,还请高手指点..小弟感激不尽。
JS实现 链表!直接上代码。
var createLinkList = function(){
var _this = {}, first = null;
_this.add = function(val) {
first = {data:val, next: first || null};//这句比较重要
}
return _this;
}
你敢相信吗?上面的代码实现了。一个单向链表!
用下面的代码,就可以使用这个单项链表.
var linksList = createLinkList(); // 创建一个单链表实例
linksList.add("jelle"); // 向链表添加一个元素
linksList.add("you");// 再次添加元素
当然链表不能仅仅只有 一个add方法。于是我添加了 get获取元素 del 删除元素 与 show遍历元素
// --- del
_this.del = function(val){
if (first.data == val){
first = first.next;
return ;
}
var ptemp = temp = first;
for( ; temp; ptemp = temp ,temp= temp.next){
if(temp.data == val){
ptemp.next = temp.next;
_this.length--;
return ;
}
}
}
// --- get
_this.get = function(){
for( var temp = first ; temp; temp= temp.next){
if(temp.data == val){
return temp
}
}
}
// ---------
_this.show = function(fn) {
for(temp=first;temp;temp=temp.next) {
fn(temp.data);
}
}
已经基本实现了。单链表的基本功能!看下面演示。
当前链表数据
操作方法.把数据写入下面的TEXT 使用 按钮 add 添加 del 删除 get 获取
------全部源码-----------

<!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-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<div>当前链表数据</div>
<textarea id="linkslist" style="width:500px;"></textarea>
<P>操作方法.把数据写入下面的TEXT 使用 按钮 add 添加 del 删除 get 获取</P>
<input type="text" id="linkslins_test" value="1" />
<input type=button value="add" style="width:70px; height:22px;" onClick="linksList.add(document.getElementById('linkslins_test').value);linkslist();">
<input type=button value="del" style="width:70px; height:22px;" onClick="linksList.del(document.getElementById('linkslins_test').value);linkslist();">
<input type=button value="get" style="width:70px; height:22px;" onClick="linksList.get(document.getElementById('linkslins_test').value);"><br/><br/>
<script type="text/javascript">
var createLinkList = function(){
var _this = {}, first = null;
_this.length = 0;
_this.add = function(val) {
first = {data:val, next: first || null};
_this.length++;
}
// --- del
_this.del = function(val){
if (first.data == val){
first = first.next;
return ;
}
var ptemp = temp = first;
for( ; temp; ptemp = temp ,temp= temp.next){
if(temp.data == val){
ptemp.next = temp.next;
_this.length--;
return ;
}
}
}
// --- get
_this.get = function(val){
for( var temp = first ; temp; temp= temp.next){
if(temp.data == val){
alert( temp )
}
}
}
// ---------
_this.show = function(fn) {
for(temp=first;temp;temp=temp.next) {
fn(temp.data);
}
}
return _this;
}
var linksList = createLinkList(); // 创建一个单链表实例
linksList.add("jelle"); // 向链表添加一个元素
linksList.add("you");// 再次添加元素
linksList.add(1);
function linkslist(){
var text = '';
linksList.show(function(data){
text +='-'+ data;
});
document.getElementById('linkslist').value = text;
}
linkslist();
</script>
</body>
</html>
分类:
JavaScript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?