假设读者有一定数据结构应用经验,比如写过数组,
队列,链表。
计算机中,有数据结构这种概念,
(作者大胆假设)是因为
1.计算机自身特点,即底层进行数据交换时寻址等客观因素的
限制,
因为存储空间分为连续的和非连续的,访问非连续空间时怎么将其联系起来,就成了
链表要解决的问题。
2.具体应用的时候节省空间时间。(假设结束)
链表的java 实现。
java中最基础的,最常见的联系是 (类)对象,与其内部的属性、方法的联系,
(类)对象可以通过方法或者直接访问的形式调取 自身的属性, 一个类的属性分为
两类,一种直接访问存储在
内存!堆中的数值。 另一种 叫引用对象, 要通过 存储在内存!栈 中的对象名, 获取地址 , 才能取的 对应在内存!栈中的数据。
刚才所说的解决内存不连续的问题,估计读者也有解决方案了吧?
可以用这种 (类)对象中的特殊的属性 “引用对象” 来实现,
(实现思路)
为了形象化, 我们引用生活中 车链子 ,英语(chain), 帮助辅助记忆。
创建 节点(类)对象
class Node()
{
Object data;
Node nextnode;
}
这样就能实现一个节点 中间 还有一个 节点。
但是在
实际应用中, 我们 不能 每次都在 需要存储的时候 敲
如下重复的代码
Node node1 = new Node ();
node1.data = xxx;
需要存储第二个数据的时候;
Node node2 = new Node();
node2.data = xxx;
node1.nextnode=node2;
所以, 可以搞一个 类,将这些重复性代码 都写进去, 该类名曰:链表
又根据刚才的节点的特点,有三种,出现在第一个的节点,因为有了它,就可以跟其他的节点联系起来,
如果你跟我说 我可以直接从第二个访问, 可以去试试,这里不建议把问题复杂化。
class Linked(){
Node diyige; 其实
习惯命名为 root; 洋气0
public void add(Object 需要添加的数据){
Node node2 = new Node();
node2.data = (传进来的)需要添加的数据;
diyige.nextnode= node2;
} 当需要添加第二个数据的时候,哈哈 只需轻轻调用这个函数。
但是还有一点,如果命名为node2,下一个莫非要用node3?
有聪明的告诉我,没事,反正是局部变量命名,又不会重名,就这么用呗。
好吧,那么我们还可以再聪明一点,我们不用考虑节点之间的整体的联系(node1,node2,node3...),只需考虑两个节点之间的关系 即这是新添加的节点,对于第一个节点来说属于 next(newtnode)。
所以经过修改....
class Linked(){
Node root; 命名为 root; 洋气0
public void add(Object 需要添加的数据){
Node newnode= new Node();
newnode.data = (传进来的)需要添加的数据;
root.nextnode= newnode;
} 当需要添加第二个数据的时候,哈哈 只需轻轻调用这个函数。
}
其他的方法 例如访问
public void get()
{
}
等就不一一写了, 良心
编码。