【数据结构java描述(一)】单链表类的create()方法的重写以及Node类的理解

本文探讨了Java中线性表的链式结构,特别是单链表的Node类设计和指针概念。通过分析Node类,强调了Java中指针的实质,并指出传统create方法由于复用insert()可能导致O(n^2)的时间复杂度。作者提出了一种预期复杂度为O(n)的create方法实现,欢迎读者交流指正。
摘要由CSDN通过智能技术生成

首先我们需要知道线性表的链式结构的设计思路:

先构造结点类,然后基于结点,设计链式结构类。

Java源码中结点类Node.Java:

package com.study.test;

 

publicclass Node {

  Object data;

  Node next;

 

  Node() {

     this(null,null);

  }

 

  Node(Object data) {

     this(data,null);

  }

 

  Node(Object data, Node next) {

     this.data = data;

     this.next = next;

  }

 

  public Object getData() {

     returndata;

  }

 

  publicvoid setData(Object data) {

     this.data = data;

  }

 

  public Node getNext() {

     returnnext;

  }

 

  publicvoid setNext(Node next) {

     this.next = next;

  }

 

}


 

很简单,但难度在于指针变量是结点类的对象,这与我们所学的理念有所不同。尤其是在将结点的运用在单链表类的描述时,不清楚next何时是指针,何时是下一个借点。

事实上,虽然java在内存层次存在指针, java根据在栈内存里的固定内存指向堆内存的随机内存,但语法上不存在指针的概念。因此java在栈内存中

声明next,来标记所在的堆空间。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值