/**
* instruction of project
*
* @author Aruiea.com
* @ClassName LinkedList
* @Version 1.0
* @Date 2020/7/19 19:33
*/
public class LinkedList {
public int size;//链表大小
private Node head;//head指向头节点,空
public LinkedList() {
size = 0;
head = new Node(null);
}
//添加元素:在尾部添加新元素
public boolean add(Node element){
Node node = head;
//遍历找出最后一个节点node.next==null的节点
while(true){
if (node.next!=null){
node = node.next;
}else {
break;
}
}
//把最后一个节点指向新插入的节点
node.next = element;
size++;
return true;
}
//插入元素:遍历下标,插入
public boolean insert(Node insertNode,int i){
//插入节点需要获得当前几点的前一个几点node,当前节点node.next,以及后一个节点node.next.next
Node node = head;
int count = 0;//计数
while(node.next!=null){
count++;
//找到要插入的位子:把当前节点后移,前驱指向插入的节点,插入节点的后驱指向之前的节点。
if (count == i){
Node temp = node.next;//存放当前节点
node.next = insertNode;//当前节点的前一个节点后驱指向新插入的节点
insertNode.next = temp;//新插入节点后驱指向temp(之前的节点)
return true;
}
node = node.next;
}
return true;
}
//修改节点信息:先找到这个节点,然后修改他的节点信息。
public void alter(int i,Node alterNode){
Node node = head.next;
int count = 0;
while (node!=null){
count++;
if (count == i){
node.setNodeEle(alterNode.getNodeEle());
}
node = node.next;
}
}
//删除操作
public void delete(int i){
Node node = head;
int count = 0;
while (node.next!=null){
count++;
if (count == i){
Node temp = node.next.next;
node.next = temp;
node = node.next;
size--;
break;
}
}
}
//遍历所有节点
public void getAll(){
int count = 0;
Node node = head;
while (true){
node = node.next;
if (node != null){
count++;
System.out.println("第"+count+"个元素:"+node);
}else {
break;
}
}
System.out.println("遍历结束!");
}
}
/**
* instruction of project
*
* @author Aruiea.com
* @ClassName Node
* @Version 1.0
* @Date 2020/7/19 19:33
*/
//单链表节点:存放当前节点的元素,和下一个节点的指针。
public class Node {
//节点存放的元素
private String nodeEle;
//指向下一个节点
public Node next;
public Node(String nodeEle) {
this.nodeEle = nodeEle;
}
public String getNodeEle() {
return nodeEle;
}
public void setNodeEle(String nodeEle) {
this.nodeEle = nodeEle;
}
@Override
public String toString() {
return "Node{" +
"nodeEle='" + nodeEle + '}';
}
}