js 创建链表(增删改查)

话说面试又失败了,今年真是坎坷的一年,女朋友跑了,工作不顺,家里催婚,大学刚毕业,大公司不要。在这个没钱没人的年纪,有点小绝望。不多说直接上代码:

/*======定义结构======*/
var node=function(element){
    this.element=element
    this.next=null
}
var linkedList=function(){
    this.head=new node("head")
    this.find=find
    this.insert=insert
    this.update=update
    this.remove=remove
}
/*======查找======*/
var find=function(item){
    let currNode=this.head
    while(currNode.element!==item){
        currNode=currNode.next
    }
    return currNode
}
/*======插入======*/
/**
*newElement:一个新节点,item:链表的目标节点
*1.查找找到目标节点,将新节点的next指向目标节点的下一个节点
*2.将目标节点的next指向这个新节点
*/
var insert=function(newElement,item){
    let newNode=new node(newElement)
    let currNode=this.find(item)
    newNode.next=currNode.next
    currNode.next=newNode
}
/*======修改======*/
/**
*查找到目标节点,将其element修改
*/
var update=function(item,newItem){
    let currNode=this.find(item)
    currNode.element=newItem
}
/*======删除======*/
/**
*找到匹配节点的前一个节点,将其next指向当前节点的下一个节点,即删除当前节点
*/
var remove=function(item){
    let currNode=this.head
    while(currNode.next!==null && currNode.next.element!==item){
        currNode=currNode.next
    }
    if(currNode.next!==null){
        currNode.next=currNode.next.next
    }
}
/*======测试代码======*/
var list=new linkedList();
list.insert(‘first‘,‘head‘)
list.insert(‘second‘,‘first‘)
list.insert(‘third‘,‘second‘)
console.log(list)
list.find(‘first‘)
console.log(list.find(‘first‘))
list.update(‘third‘,‘three‘)
console.log(list)
list.remove(‘second‘)
console.log(list)

原文地址:https://www.cnblogs.com/xingguozhiming/p/9902836.html

时间: 2024-10-25 07:55:32

js 创建链表(增删改查)的相关文章

js操作indexedDB增删改查示例

js操作indexedDB增删改查示例 if ('indexedDB' in window) { // 如果数据库不存在则创建,如果存在但是version更大,会自动升级不会复制原来的版本 var req = indexedDB.open("TestDB", 1); req.onupgradeneeded = function(e) { var db = req.result; // var store = db.createObjectStore("student"

Android(java)学习笔记245:ContentProvider之银行数据库创建和增删改查的实现

1.Android的四大组件: (1)Activity  用户交互的UI界面 (2)Service  后台运行的服务 (3)BroadcastReceiver 广播接收者 (4)ContentProvider  内容提供者 2. ContentProvider  内容提供者 用途:把应用程序私有的数据暴露给别的应用程序. 3.下面通过一个银行数据库创建和增删改查的实现案例说明ContentProvider的使用: (1)首先我们这里要用到数据库,首先我们必须先扩展一个抽象类SQLiteOpenH

XML——对XML文档的创建与增删改查

原文:XML--对XML文档的创建与增删改查 一.创建的第一种方式  //1.创建一个XML文档 XmlDocument doc = new XmlDocument(); //2.创建第一行描述信息 XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8", null); //3.将创建的第一行描述信息添加到文档中 doc.AppendChild(dec); //4.给文档添加根节点 XmlElemen

【andorid基础篇】数据库的创建以及增删改查

I,安卓下的数据库 安卓下使用的数据库是SQLite,安卓为我们提供的API是SQLiteOpenHelper. 1,创建一个数据库 1)写一类去继承抽象类SQLiteOpenHelper,我们需要复写相关的方法: 1 public WcxSQLite(Context context, String name, CursorFactory factory,int version) { super(context, name, factory, version); 3 } 4 5 public v

单向链表增删改查的实现

/*实现单向链表的增删改查 */#include <malloc.h>#include <stdio.h>#include<stdlib.h>#define LEN sizeof(node) typedef struct node{ int num; struct node *next;}node,*pnode; /*在链表头进行插入,新节点成为头节点,原头节点成为新节点的下一个节点,头节点指针后伊一位*/void insert_head(pnode *phead,in

数据库的创建和增删改查,外键和主键的创建

[关键字 ]paimary key [代表主键],not null[ 非空 ]foreign key[ 代表外键] (zhu) references[引用] zhu ( code)[ 建立外键关系 ]auto_increment[自动递增]注释语法:用#注释. 创建表create table test(  创建列:  code varchar[字符串]( 写长度 ),   name varchar( 20 )) 注意:1.每条语句后加分号:      2.最后一列不需要加逗号:      3.

数据库 基础知识创建及增删改查

1.查找数据库的主文件和日志文件所在位置: 右击数据库,点击属性,会出现下图: 可以看出,此数据库拥有一个主文件(mdf)和一个日志文件(ldf) 2.新建数据库: 右击数据库,新建数据库,输入数据库的名称 3.用语句新建数据库: 点击新建查询,在窗口内输入语句并点击执行 4.使用数据库并创建一个表,表中添加列名 5.在表中添加数据,并查询此表.(按照列名来添加,用逗号隔开) 6.各种增删改查的语句的使用示例

JS源生代码“增删改查”之增

51呢最近在做一个管理数据的,第一次接触到用JS的源代码去实现一些功能,才知道网页里的许多功能都是依赖于“增删改查”完成的,下面的几张图片就是对于增的演示: 下面是有关HTML的代码:这个主要是弹窗部分的HTML代码 <div id="addDialog"> <div id="div11"> <form action="" id="from"> <table class="b

yii2-basic后台管理功能开发之二:创建CRUD增删改查

昨天实现了后台模板的嵌套,今天我们可以试着创建CRUD模型啦 刚开始的应该都是“套用”,不再打算细说,只把关键的地方指出来. CRUD即数据库增删改查操作.可以理解为yii2为我们做了一个组件,来实现基本的增删改查视图和操作. 1.创建数据库表 2.用gii生成model模型 3.用gii生成CRUD 需要注意的是CRUD生成的控制器的namespace,要和当前所在目录保持一致.否组路由会报错,找不到该页面等信息.

java实现单链表增删改查

package 数据结构算法.链表; /* *定义节点 * 链表由节点构成 */ public class Node<E> { private E e; //数据data private Node<E> next; //指向下一个节点 public Node() { } public Node(E e) { this.e = e; } public Node<E> getNext() { return next; } public void setNext(Node&l