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

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

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

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,来标记所在的堆空间。

声明Node类的对象,不代表创建了Node的实例(在堆内存中占有空间),更多的是创建了一个标记,用来标记堆中某块内存。

然后我发现单链表类的create方法实现由于复用了insert(),,而复杂度达到O(n^2),因此自己设计了一个复杂度只是O(n)的实现算法,在这里分享,估计存在错误,希望大家指出。

import java.util.Scanner;publicclass MyLinkList { publicvoid create(intn) {Scanner sc = new Scanner(System.in);MyNode curHead;MyNode lastHead = new MyNode(sc.next());for (inti = 0; i < n; i++) {MyNode newNode = new MyNode(sc.next());curHead = newNode;lastHead.setNext(curHead);lastHead = newNode;} }}

一个人,一条路,人在途中,心随景动,从起点,

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

相关文章:

你感兴趣的文章:

标签云: