0
点赞
收藏
分享

微信扫一扫

Day22.homework:编写程序实现单向链表数据结构

IT程序员 2022-01-06 阅读 86

编写程序实现单向链表数据结构 

编写程序实现单向链表数据结构:
	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

举报

相关推荐

0 条评论