前言: 最近在复习数据结构与算法的时候,之前上课的时候是使用C++来实现的,现在在学习Java就想着用Java实现一遍,因为链表的代码老实说还得自己过一遍,在搜索的时候觉得别人的代码有些关键的节点代码觉得写的不是很清晰,所以自己写一遍会更好, 然后现在分享出来也是希望能收获到反馈,因为链表的关键就是边界条件特别多。希望大家多多指教!!
正文:
其中包括了头增加和尾增加,根据相应位置增加还有相应位置的删除。和我看到的大部分实现不同的地方在于,找到相应的位置我是用另外的函数去获取相应的节点的。需要注意的还有一点,就是我的Index是从1开始,也就是0是头节点。比如:删除节点,如果index等于1,则是删除第一个有效节点,头节点不算有效节点。【数据结构与算法|单链表Java的实现】具体的代码实现:
package com.base.algorithm;
class Node {//写public 是为了不用写set和get方法
public int data;
public Node next;
public Node(int data) {
this.data = https://www.it610.com/article/data;
}
}
class LinkedList1{//和LinkedLink类重名了
public Node head;
public int len;
public LinkedList1(){
head = new Node(0);
len = 0;
}
public void insertNode(int index, int data){// 在指定位置插入一个新的节点,插入后它的index就等于该index
if(index <= 0 || index> len){
System.out.println("传入参数错误");
return;
}
Node newNode = new Node(data);
Node indexNode = returnIndexNode(index);
newNode.next = indexNode.next;
indexNode.next = newNode;
len++;
}
public void addNodeHead(int data){ //头插入
Node newNode = new Node(data);
newNode.next = head.next;
head.next = newNode;
len++;
}
public void addNodeTail(int data){ //尾插入
Node newNode = new Node(data);
Node temp = head;
while(temp.next != null){
temp = temp.next;
}
temp.next = newNode;
len++;
}
public Node returnIndexNode(int index){//返回目标位置的前一个节点
int point = 1;
Node temp = head;
while(temp!=null && point len){
System.out.println("传入参数错误");
return;
}
Node indexNode = returnIndexNode(index);
indexNode.next = indexNode.next.next;
len--;
}
public void display(){
Node p = head.next;
while(p != null){
System.out.println(p.data);
p = p.next;
}
}
}
public class LinkedListTest {
public static void main(String[] args) {
LinkedList1 node = new LinkedList1();
node.addNodeTail(1);
node.addNodeTail(2);
node.addNodeTail(3);
node.addNodeHead(8);
node.insertNode(2,9);
node.display();
System.out.println("------------");
node.deleteNode(1);
node.display();
}
}
输出的结果:
文章图片
总结: 数据结构Java实现我也会继续更新,主要是想先放出来得到大家的反馈,然后再不断完善和修改。希望看到的大们多多指正,得到反馈我也会立马思考并进行改正,谢谢大家
推荐阅读
- JAVA|Zookeeper分布式锁
- 蓝桥杯|2019第十届蓝桥杯省赛JAVA A组真题解析(带源码及解析)
- 算法与数据结构|第十届蓝桥杯大赛软件类省赛Java研究生组-题解
- 蓝桥杯|第十届蓝桥杯省赛编程题题解(C++A组)
- Java设计模式|Java 设计模式--桥接模式
- Java|Java 传统桥接模式
- 设计模式|桥接模式
- 设计模式|Java设计模式-桥接模式 理论代码相结合
- java|主题(JAVA 桥接模式)