单项链表java简单实现
Posted 大树的困惑
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单项链表java简单实现相关的知识,希望对你有一定的参考价值。
单向链表
概念懂得都懂,不懂的是上面的人为了保护你,让你少知道点东西比较好,毕竟这东西你说它重要也确实重要,说他不重要也确实没那么重要,但是我觉得挺重要的.复制粘贴太损耗社会劳动力了,
通过节点类Node的next引用下一个节点的一种数据结构,
记录复习一下实现方法
package DataStrct.linklist;
/**
* @author luke
* @date 2021/4/1812:43
*/
public class SinglelinklistDemo
public static void main(String[] args)
SingleLinklist singleLinklist = new SingleLinklist(new Node(1, "第一个节点"));
singleLinklist.add(new Node(2, "第二个节点"));
singleLinklist.add(new Node(3, "第三个节点"));
singleLinklist.add(new Node(4, "第四个节点"));
singleLinklist.print_list();
static class Node
int node_id;
String node_data;
Node next_node;
public Node(int node_id, String node_data)
this.node_id = node_id;
this.node_data = node_data;
@Override
public String toString()
return "node" +
"node_id=" + node_id +
", node_data='" + node_data +
'';
static class SingleLinklist
Node head;
SingleLinklist(Node node)
head = node;
public void add(Node node)
//添加节点,直接添加到链表的最后
//1.找到链表的最后一个节点--node.next = null
Node tempnode = head;
while (true)
//定义一个tempnode 变量用来存放当前遍历的节点
if (tempnode.next_node == null)
break; //next为null 说明是最后一个节点,跳出遍历循环
else if (tempnode.next_node != null)
tempnode = tempnode.next_node;//如果下个节点不为空,则将下个节点赋予临时遍历继续遍历
tempnode.next_node = node;
public void print_list()
//遍历打印链表
Node temp = head;
while (true)
//打印当前的节点
System.out.println(temp);
if (temp.next_node == null)
break;
//将临时节点赋值为下个节点
temp = temp.next_node;
还有带排序的单项链表
package DataStrct.linklist;
/**
* @author luke
* @date 2021/4/1817:26
*/
public class SingleOrderlinklistDemo
public static void main(String[] args)
SingleOrderlinklist singleOrder = new SingleOrderlinklist(new Node(6, "第六个节点"));
singleOrder.add(new Node(2, "第二个节点"));
singleOrder.add(new Node(4, "第四个节点"));
singleOrder.add(new Node(5, "第五个节点"));
singleOrder.add(new Node(3, "第三个节点"));
singleOrder.print_list();
//修改
singleOrder.update(new Node(5,"修改后的第五个节点" ));
singleOrder.print_list();
static class Node
int id;
String data;
Node next;
public Node(int id, String data)
this.id = id;
this.data = data;
@Override
public String toString()
return "Node" +
"id=" + id +
", data='" + data + '\\'' +
'';
static class SingleOrderlinklist
Node head;
public SingleOrderlinklist(Node head)
this.head = head;
public void add(Node node)
//按照顺序插入
//1.通过比较插入节点id 直至遇到当前节点的下个节点的id比当前插入的id大时,插入到当前id的下个节点中
Node tempnode = head;
//先和头节点比较,如果小于头节点直接插入到头节点
if (node.id<tempnode.id)
node.next=tempnode;
head=node;
return;
while (true)
if (tempnode.next == null) //当当前的节点下个为空时,需要比较插入节点和当前的节点的大小
break;
if (node.id < tempnode.next.id) //因为是插入,所以要把当前节点的下个节点接入到插入节点的下个节点
break;
tempnode = tempnode.next;
node.next=tempnode.next;
tempnode.next=node;
public void update(Node node)
//遍历链表找到对应的节点,并更新里面的属性
Node temp = head;
while (true)
if (temp==null)
break;
if (temp.id==node.id)
temp.data=node.data;
break;
temp=temp.next;
//打印
public void print_list()
Node tempnode = head;
while (true)
System.out.println(tempnode);
if (tempnode.next == null)
break;
tempnode = tempnode.next;
以上是关于单项链表java简单实现的主要内容,如果未能解决你的问题,请参考以下文章