java链表代码,java链表的基本使用 代码
package test;
interface ILink{
public void add(E e);//添加鏈表數據
public int size();//返回鏈表長度
public boolean isEmpty();//判斷鏈表是否為空
public Object [] toArray();//返回集合數據
public E get(int index);//返回指定索引的數據
public void set(int index,E data);//修改值
public boolean contains(E data);//判斷指定數據是否存在
}
class LinkImpl implements ILink{
private class Node{//保存節點的數據關系
private E data;
private Node next;//保存下一個引用
private Node(E data) {
this.data=data;
}
//第一次調用
public void addNode(Node newNode) {
//保存新的Node數據
if(this.next==null) {
this.next =newNode;
}else {
this.next.addNode(newNode);
}
}
public void toArrayNode() {
LinkImpl.this.returnData [LinkImpl.this.foot ++]=this.data;
if(this.next!=null) {
this.next.toArrayNode();
}
}
public E getNode(int index) {
if(LinkImpl.this.foot ++ ==index) {
return this.data;
}
else {
return this.next.getNode(index);
}
}
public void setNode(int index,E data) {
if(LinkImpl.this.foot ++ ==index) {
this.data=data;
}
else {
this.next.getNode(index);
}
}
public boolean containsNode(E data) {
if(this.data.equals(data)) {
return true;
}
else{
if(this.next==null) {
return false;
}else {
return this.next.containsNode(data);
}
}
}
}
private Node root;
//增加數據
private int count;
private int foot;
private Object[] returnData;
public void add(E e) {
if(e==null) {
return ;
}else {
Node newNode = new Node(e);//創建新節點
if(this.root==null) {
this.root=newNode;
}
else {
this.root.addNode(newNode);
}
this.count++;
}
}
@Override
public int size() {
// TODO Auto-generated method stub
return this.count;
}
@Override
public boolean isEmpty() {
//this.count==0
return this.root==null;
}
@Override
public Object[] toArray() {
if(this.isEmpty()) {
return null;
}
this.foot=0;
this.returnData=new Object[this.count];
this.root.toArrayNode();
return this.returnData;
}
@Override
public E get(int index) {
if(index>this.count) {
return null;
}
this.foot=0;
return this.root.getNode(index);
}
@Override
public void set(int index, E data) {
if(index>=this.count) {
return ;
}
this.foot=0;
this.root.setNode(index, data);
}
@Override
public boolean contains(E data) {
if(data==null) {
return false;
}
return this.root.containsNode(data);
}
}
public class Test1 {
public static void main(String[] args) throws Exception {
LinkImpl all = new LinkImpl();
System.out.println("size:"+all.size());
all.add("hello");
all.add("wo");
System.out.println("-------------");
System.out.println("size:"+all.size());
Object [] array = all.toArray();
for(Object obj:array) {
System.out.print(obj);
}
System.out.println("數據獲取");
System.out.println(all.get(1));
System.out.println(all.contains("wo"));
System.out.println(all.contains("women"));
}
}
標簽:index,return,int,代碼,next,鏈表,java,data,public
來源: https://www.cnblogs.com/yxj808/p/12644306.html
總結
以上是生活随笔為你收集整理的java链表代码,java链表的基本使用 代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 内存超频:提升性能还是引发灾难?
- 下一篇: jupyter 方框 汉字,jupyte