dianbolan 2021-08-02 16:47 采纳率: 100%

# 单链表如何用java语言实现

• 写回答

#### 2条回答默认 最新

• qq_36941205 2021-08-02 16:49
关注

/**

• 单链表实现

• @author caasi

• @since 2021-07-28 16:58:20

• /
/**

• 需要有的最基本的方法
• size() 返回链表的长度
• isEmpty() 判断链表是否为空
• first() 返回链表的第一个元素，如果链表为空，则返回null
• last() 返回链表的最后一个元素，如果链表为空，则返回null
• removeFirst() 删除并返回链表的第一个元素，如果链表为空，则返回null
• /

/**

• 节点内部类

• @param

• /
private class Node{
private E element;
private Node next;
public Node(E e, Node n){

``````  element = e;
next = n;
``````

}

public E getElement(){

``````  return element;
``````

}

public Node getNext() {

``````  return next;
``````

}

public void setNext(Node next) {

``````  this.next = next;
``````

}
}

//头节点
//尾节点
private Node tail;
//链表长度
private int size;

public int size(){

``````  return size;
``````

}

public boolean isEmpty(){

``````  return size == 0;
``````

}

public E first(){

``````  if(isEmpty()) return null;
``````

}

public E last(){

``````  if(isEmpty()) return null;
return tail.getElement();
``````

}

public E removeFirst(){

``````  if(isEmpty()) return null;
size -- ;
if(isEmpty()) tail = null;
return e;
``````

}

``````  head = new Node<>(e, head);
size ++;
``````

}

``````  Node<E> newNode = new Node<>(e, null);
if(isEmpty()){
} else {
tail.setNext(newNode);
}
size ++;
tail = newNode;
``````

}

``````  addLast(e);
``````

}

public void print(){

``````  if(isEmpty()) return;
while(node != null){
System.out.println(node.getElement());
node = node.getNext();
}
``````

}

@Override
public boolean equals(Object obj) {

``````  if (obj == null) return false;
if(getClass() != obj.getClass()) return false;
if(size != o.size) return false;
while (walkA != null){
if(!walkA.getElement().equals(walkB.getElement())){
return false;
}
walkA = walkA.getNext();
walkB = walkB.getNext();
}
return true;
``````

}

@Override
protected Object clone() throws CloneNotSupportedException {

``````  SinglyLinkedList other = (SinglyLinkedList) super.clone();
if (size > 0){
while (walk != null){
Node<E> newest = new Node<>(walk.getElement(), null);
walk = walk.getNext();
}
}
return other;
``````

}
}

本回答被题主选为最佳回答 , 对您是否有帮助呢?
评论

#### 问题事件

• 已结题 （查看结题原因） 8月2日
• 已采纳回答 8月2日
• 创建了问题 8月2日

#### 悬赏问题

• ¥15 有偿求苍穹外卖环境配置
• ¥15 代码在keil5里变成了这样怎么办啊，文件图像也变了，
• ¥20 Ue4.26打包win64bit报错，如何解决？(语言-c++)
• ¥15 clousx6整点报时指令怎么写
• ¥30 远程帮我安装软件及库文件
• ¥15 关于#自动化#的问题：如何通过电脑控制多相机同步拍照或摄影（相机或者摄影模组数量大于60），并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
• ¥20 深信服vpn-2050这台设备如何配置才能成功联网？
• ¥15 Arduino的wifi连接，如何关闭低功耗模式？