单链表
你知道单链表长什么样子吗?嘿嘿,说起来感觉超级简单,但是写起来考虑的就多喽
代码
package NodeDemo;
/**
* @param
* @Author: judy
* @Description:
* @Date: Created in 20:02 2019/1/18
*/
public class Link {
//初始化head为空
Node head=null;
/**
* 创建头结点
* @param data 数据
*/
public void create(String data){
//判断头肩点是否为空
Node node = new Node(data);
if (head == null) {
head = node;
return;
}
Node nodeNext= head;
//说明不是最后一个,得到最后一个这样可以赋值node
while (nodeNext.next != null){
nodeNext = nodeNext.next;
}
//得到最后的一个地址指向节点
nodeNext.next = node;
}
/*** *
*
* @param index 删除的节点的地址
*/
public boolean deleteNode(int index){
//1判断是否有节点
//1.1节点长度左右边境
//2删除是否为头结点
//3删除指定为节点
if(index<0 || lengthNode()<0){
//不符合条件
return false;
}
if(index==1){
//删除头节点
head=null;
return true;
}
if(index>1){
//1得到当前节点
//2得到前一个节点
//3得到后一个节点
Node lastNode= head;
//得到前一个节点,需要判断index
Node findPreNode = head;
int i=1;
while (findPreNode.next!=null){
if(index==i){
//找到要删除节点的后节点点
lastNode.next = findPreNode.next;
return true;
//找到删除节点后节点
}else {
i++;
lastNode = findPreNode; //前
findPreNode = findPreNode.next; //后
}
}
}
return true;
}
/**
*
* @return 链表长度
*/
public int lengthNode(){
//创建一个新的节点,为了下面循环节点
Node node = head;
int length = 0;
//如果节点
while (node.next != null){
length ++;
node=node.next;
}
return length;
}
//打印
public void printNode(){
Node nowNode= head;
while (nowNode.next!=null){
System.out.println(nowNode.data+",");
nowNode= nowNode.next;
}
}
public static void main(String[] args){
Link link = new Link();
link.create("9");
link.create("8");
link.create("7");
link.create("6");
link.create("5");
link.printNode();
System.out.println("---------------------");
link.deleteNode(2);
link.printNode();
}
}
结果:9,
8,
7,
6,
9,
7,
6,
思路
先说一下思路把
1判断是否有节点
2判断头结点是否有数据
3插入头节点
4如果头结点不为空则先下一次插入数据
5删除节点
6获取节点长度
8得到要删除接地位置,然后node.next的时候一次判断是否相等,如果相等则删除
总结
单链表简单的实现了喽.谢谢靖峰同学~