`
teibunsei
  • 浏览: 15000 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

java数据结构之链表

    博客分类:
  • Java
阅读更多
假设读者有一定数据结构应用经验,比如写过数组,队列,链表。
计算机中,有数据结构这种概念,


          (作者大胆假设)是因为
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()
{
  
}

等就不一一写了, 良心编码。





分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics