单向列表在开发中属于常见的一种数据结构.其实他就是把一个元素串接在另一个元素后面.如何实现?
第一步 : 创建对象类
package com.xbb.demo.linked;
public class HeroNode {
/**
* 编号
*/
private int id;
/**
* 英雄名称
*/
private String name;
/**
* 下一个英雄串接位置
*/
private HeroNode next;
/**
* 构造方法
* @param id
* @param name
*/
public HeroNode(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public HeroNode getNext() {
return next;
}
public void setNext(HeroNode next) {
this.next = next;
}
@Override
public String toString() {
return "id = " + id + ", name = " + name;
}
}
第二步 : 列表功能实现 :
package com.xbb.demo.linked;
/**
* 无序单向链表实现
*/
public class SingleLinkedListDemo {
/**
* 第一步
* 初始化一个头节点.不放具体数据
*/
private HeroNode firstHear = new HeroNode(0,null);
/**
* 第一步
* 添加新节点
*/
public void add(HeroNode heroNode){
// 创建一个t来作为起点寻找下一个节点的位置
HeroNode temp = firstHear;
// 判断temp的next节点是否为空.如果为空,则把新节点放到该节点的next
while (true){
if (temp.getNext() == null){
break;
}else{
temp = temp.getNext();
}
}
temp.setNext(heroNode);
}
/**
* 删除某个元素
* @param heroNode
*/
public void delete(HeroNode heroNode){
HeroNode temp = firstHear;
HeroNode before = null;
while (true){
if (temp.getNext() == null){
break;
}else{
before = temp;
temp = temp.getNext();
if (temp.getId() == heroNode.getId()){
break;
}
}
}
before.setNext(temp.getNext());
}
/**
* 输出 :
*/
public void list(){
HeroNode temp = firstHear;
while (temp.getNext() != null){
temp = temp.getNext();
System.out.println(temp.toString());
}
}
}
测试 :
@org.junit.Test
public void tese() {
SingleLinkedListDemo singleLinkedListDemo = new SingleLinkedListDemo();
HeroNode no1 = new HeroNode(1,"张雪峰");
HeroNode no2 = new HeroNode(2,"李瑞鹏");
HeroNode no3 = new HeroNode(3,"惠茂阳");
singleLinkedListDemo.add(no1);
singleLinkedListDemo.add(no2);
singleLinkedListDemo.add(no3);
singleLinkedListDemo.list();
}
更多数据结构与算法知识