编写程序实现单向链表数据结构
编写程序实现单向链表数据结构:
public class Node {
Object data;
Node next;
}
public class MyLinkedList{
Node header;
....
// 添加数据的方法
// 删除数据的方法
// 修改数据的方法
// 查找数据的方法
// 打印集合中每个元素的方法
}
最后编写测试程序
- 代码实现(部分):
public class Node {
Object data;
Node next;
public Node() {
}
public Node(Object data, Node next) {
this.data = data;
this.next = next;
}
}
//编写程序实现单向链表数据结构:
public class Linke {
Node header; //定义头节点对象
int size = 0; //当前节点数
// 添加数据的方法
public void add(Object data){
if(header == null){ //如果不存在节点,创建新节点
header = new Node(data,null);
}
else{
Node currentLastNode = findLase(header); //调用方法查找最后一个节点
currentLastNode.next = new Node(data,null);
}
size++;
}
private Node findLase(Node header){ //递归查找到最后一个节点的方法
if(header.next==null){
return header;
}
return findLase(header.next);
}
//—————————————————————————————————————————————————————————————————————
// 删除数据的方法 待完成
public void remove(Object data){
}
//—————————————————————————————————————————————————————————————————————
// 修改数据的方法 待完成
//—————————————————————————————————————————————————————————————————————
// 查找数据的方法
public void query(Object data){
if(queryNode(header,data)) {
System.out.println("存在");
}else{
System.out.println("不存在");
}
}
//int index = 0; 可改进方法,由返回false true改为返回该元素下标
public boolean queryNode(Node node,Object data){
if(node.data.equals(data)){ //该处equals可能存在问题,尚未解决
return true;
}
if(node.next!=null){
return queryNode(node.next,data); //通过递归查找每一个节点
}
return false;
}
//—————————————————————————————————————————————————————————————————————
// 打印集合中每个元素的方法
public void print(){
if(header==null){
System.out.println("当前链表没有元素");
return;
}
printNode(this.header);
}
//递归打印每个节点
private void printNode (Node node){
System.out.println(node.data);
if(node.next!=null){
printNode(node.next);
}
}
}
- 测试程序
public class test {
public static void main(String[] args) {
Linke lin = new Linke();
lin.add(123);
lin.add(456);
lin.add("张三");
lin.print(); //123 456 张三
lin.query("张三"); //存在
}
}
- 部分教学:
Java入门必修课,Java零基础入门必选课程,老杜带你学零基础学Java必备课程(基于JDK13系列Java零基础必选)_哔哩哔哩_bilibili