您的位置:首页 > 理论基础 > 数据结构算法

用Java实现单链表数据结构

2016-09-25 10:29 302 查看
闲着,也不知道干嘛。就写写吧,嘻嘻!

单链表,想想看哈。首先,单链表,包括一個数据和一個节点。其中,数据用來存储数据,而节点用于存储下一個节点。这样才能构成一個链表关系。因为呢,只是存下一個链表,所以呢就叫单链表数据结构啦。如果是存前面的和后面的,那是双链表哈。

OK。要不,來個图片吧!我用PPT來画一下,嘻嘻!



那么,这样子的话,就是一個单链表结果啦。

具体用代码怎么实习那呢?來吧,就直接新建一個SingleLink.java文件吧,嘻嘻!很多年沒有这样写代码了是吧!

public class SingleLink{

//第一個节点
private Node headNode = null;
//前一個节点
private Node preNode = null;

//描述一個结构,所以呢,我们需要存数据的,和存下一個节点
private class Node{
Object data;//存数据
Node nextNode;//存下一個节点
}

//对于数据结构,是不是有添加数据,删除数据,遍历数据等操作呢?

//先來個添加数据吧
public void add(Object data){
//首先要创建节点
Node node = new Node();

//然后赋值
node.data = data;

//再把下一個指向关联好即可,也就是前一個节点要指向当前的节点。
//但是我们要考虑的是,假如,当前是第一個节点呢,那就沒有前一個节点吧。
//所以,如果是第一個节点的话,那么,直接让这個节点为前一個节点即可。
//好,看码:
if(headNode == null){
headNode = node;
preNode = headNode;
}

//如果已经有了第一個节点,那么,目前这個节点关联到前一個节点上。
preNode.nextNode = node;
preNode = node;
}

//再來一個遍历的方法
public String showAllDatas(){
StringBuilder sb = new StringBuilder();

//从第一個几点开始,获取到下個节点的数据
Node tempNode = headNode;
while(tempNode != null){
sb.append(tempNode.data +" ");
tempNode = tempNode.nextNode;
}

return sb.toString();
}

}然后呢,用一個主函数测试一下哈:
public class Test{

public static void main(String[] args){
//创建一個SingleLink对象,用于存数据
SingleLink sl = new SingleLink();

//添加数据
sl.add(12);
sl.add("bbs.sunofbeaches.com");
sl.add(54);
sl.add("www.sunofbeaches.com");

//遍历数据
System.out.println(sl.showAllDatas());
}

}再來,编译运行一下:
C:\Users\Administrator\Desktop>javac SingleLink.java

C:\Users\Administrator\Desktop>javac Test.java

C:\Users\Administrator\Desktop>java Test
12 bbs.sunofbeaches.com 54 www.sunofbeaches.com

C:\Users\Administrator\Desktop>

爽不爽,是不是这個世界又美好了一些呢?

当然,你还可以对这個数据进行排序,如果是这個自定义的对象,那么我们需要指定泛型呀,并且定义接口
去让子类实现比较的方法。你比较的时候,直接调用接口里的方法即可。再根据比较结果,去存储数据哈,嘻嘻!

是不是很简单呢!來吧,动手写一下,你也可以的!加油,如果不会,欢迎讨论哦!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息