java有没有链表_java实现链表

今天和同学讨论时,他说java没有指针怎么实现链表。的确,在Java中没有指针。但是,Java中引用和C++中的引用有很大不同,而且具有一定指针的功能(过两天会总结)。所以,就在家用Java实现了一下链表这种数据结构。目前我想到了两种方法用Java实现链表:

1、Java允许类的定义中出现该类对象,所以可以通过对该类对象的引用实现链表。

2、可以通过定义一个基类,通过子类的向上转型。通过父类指针模拟C++中的指针类型,从而实现链表。

废话不多说,上代码:

方法1 Node.java:package com.pasilo;

public class Node {

private int data;

private Node next;

public Node(){}

public Node(int data){

this.data = data;

this.next = new Node();

}

public int getData(){

return this.data;

}

public void setData(int value){

this.data = value;

}

public Node getNext(){

return this.next;

}

public void setNewNext(int value){

Node newNode = new Node(value);

this.next = newNode;

}

public void setNext(Node node){

this.next = node;

}

}

方法1 List.java:package com.pasilo;

public class List {

private Node head;

private Node current;

public List(int data){

this.head = new Node(data);

current = head;

}

public void append(int value){

current.setNewNext(value);

current = current.getNext();

}

public void remove(int destation){

Node pointer = this.head;

for(int i=0;i

pointer = pointer.getNext();

}

Node temp = pointer.getNext().getNext();

pointer.setNext(temp);

}

public void insert(int destation,int value){

Node pointer = this.head;

for(int i=0;i

pointer = pointer.getNext();

}

Node temp = pointer.getNext();

Node newNode = new Node(value);

pointer.setNext(newNode);

newNode.setNext(temp);

}

public int at(int index){

Node pointer = this.head;

for(int i=0;i

pointer = pointer.getNext();

}

return pointer.getData();

}

public void display(){

Node pointer = this.head;

while(current != pointer){

System.out.println("data is:"+pointer.getData());

pointer = pointer.getNext();

}

System.out.println("data is:"+pointer.getData());

System.out.println("this is the end.");

}

public int size(){

int size = 1;

Node pointer = this.head;

while(current != pointer){

pointer = pointer.getNext();

size++;

}

return size;

}

public static void main(String[] args) {

// TODO Auto-generated method stub

List list = new List(4);

list.append(4);

list.append(1);

list.append(2);

list.insert(2, 10);

list.display();

list.remove(2);

list.display();

System.out.println(list.at(2));

System.out.println("size of the list:"+list.size());

}

}

未完待续..........

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值