JAVA实现双向链表的增删功能的方法
程序员文章站
2022-06-19 23:41:45
java实现双向链表的增删功能,完整代码
package linked;
class linkedtable{
}
public class linke...
java实现双向链表的增删功能,完整代码
package linked; class linkedtable{ } public class linkedtabletest { //构造单链表 static node node1 = new node("name1"); static node node2 = new node("name2"); static node node3 = new node("name3"); static node node4 = new node("name4"); static node node5 = new node("name5"); public static void main(string[] args) { //设置指针 setpoint(); //循环遍历 system.out.println("*******初始链表*******"); out(node1,node5); system.out.println(); //插入节点在node2的后面 addnode(node2,node3); // 循环遍历 system.out.println("*******插入node2.5*******"); out(node1, node5); system.out.println(); //删除节点 node2.setnextnode(node3); node3.setnextnodef(node2); // 循环遍历 system.out.println("*******删除node2.5*******"); out(node1, node5); system.out.println(); } //设置指针 public static void setpoint() { //设置正向指针 node1.setnextnode(node2); node2.setnextnode(node3); node3.setnextnode(node4); node4.setnextnode(node5); //设置反向指针 node5.setnextnodef(node4); node4.setnextnodef(node3); node3.setnextnodef(node2); node2.setnextnodef(node1); } //循环遍历单链表 public static void outlinked(node startnode){ node node= new node(); node.setnextnode(startnode); do { node=node.getnextnode(); system.out.print(node.getname()+"----"); }while(node.getnextnode()!=null); } //反向循环遍历单链表 public static void outlinkedf(node endnode){ node node= new node(); node.setnextnodef(endnode); do { node=node.getnextnodef(); system.out.print(node.getname()+"----"); }while(node.getnextnodef()!=null); } //循环遍历 public static void out(node startnode,node endnode) { outlinked(startnode); system.out.println(); outlinkedf(endnode); } //插入节点 public static void addnode(node prenode,node nextnode) { node node_add = new node("name2.5"); node_add.setnextnode(prenode.getnextnode()); prenode.setnextnode(node_add); node_add.setnextnodef(nextnode.getnextnodef()); nextnode.setnextnodef(node_add); } } class node { private string name; private node nextnode; private node nextnodef; public void setname(string name) { this.name=name; } public void setnextnode(node nextnode) { this.nextnode=nextnode; } public void setnextnodef(node nextnodef) { this.nextnodef=nextnodef; } public string getname() { return this.name; } public node getnextnode() { return this.nextnode; } public node getnextnodef() { return this.nextnodef; } public node(string name) { this.name=name; this.nextnode=null; } public node( ) { } }
1,构造node节点,需要两个指针,一个正向存储下一个元素的位置,一个反向存储下一个元素的位置
参数说明:
name:用于存储node自身的信息
nextnode:用于存储正向指针
nextnodef:用于存储反向指针
class node { private string name; private node nextnode; private node nextnodef; public void setname(string name) { this.name=name; } public void setnextnode(node nextnode) { this.nextnode=nextnode; } public void setnextnodef(node nextnodef) { this.nextnodef=nextnodef; } public string getname() { return this.name; } public node getnextnode() { return this.nextnode; } public node getnextnodef() { return this.nextnodef; } public node(string name) { this.name=name; this.nextnode=null; } public node( ) { } }
2,创建节点,设置指针连接节点
正向指针:指向下一个节点
反向节点:指向上一个节点
//构造单链表 static node node1 = new node("name1"); static node node2 = new node("name2"); static node node3 = new node("name3"); static node node4 = new node("name4"); static node node5 = new node("name5");
public static void setpoint() { //设置正向指针 node1.setnextnode(node2); node2.setnextnode(node3); node3.setnextnode(node4); node4.setnextnode(node5); //设置反向指针 node5.setnextnodef(node4); node4.setnextnodef(node3); node3.setnextnodef(node2); node2.setnextnodef(node1); }
3,将链表循环遍历输出
public static void outlinked(node startnode){ node node= new node(); node.setnextnode(startnode); do { node=node.getnextnode(); system.out.print(node.getname()+"----"); }while(node.getnextnode()!=null); }
public static void outlinkedf(node endnode){ node node= new node(); node.setnextnodef(endnode); do { node=node.getnextnodef(); system.out.print(node.getname()+"----"); }while(node.getnextnodef()!=null); }
4,添加节点
public static void addnode(node prenode,node nextnode) { node node_add = new node("name2.5"); node_add.setnextnode(prenode.getnextnode()); prenode.setnextnode(node_add); node_add.setnextnodef(nextnode.getnextnodef()); nextnode.setnextnodef(node_add); }
5,删除节点
node2.setnextnode(node3); node3.setnextnodef(node2);
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。