简单单向链表的列子

复制代码
package node;

public class LNode {
    private int data; // 脚标
    private LNode next;// 表示下一个节点

    public int getData() {
        return data;
    }

    public void setData(int data) {
        this.data = data;
    }

    public LNode getNext() {
        return next;
    }

    public void setNext(LNode next) {
        this.next = next;
    }

}
复制代码
package node;
 
public class Linklist {
 
    private LNode head; // 定义一个头节点
 
    // 创建链表的方法
    public void createlink(int[] a) {
        LNode pnew;// 表示新产生的节点
        LNode ptail = new LNode();// 表示末节点
        head = ptail;// 开始头节点跟末节点相同
        for (int i = 0; i < a.length; i++) {
            pnew = new LNode();
            pnew.setData(a[i]); // 表示新节点的角标
            ptail.setNext(pnew);
            pnew.setNext(null);// 把新长生成的节点节点设置为空
            ptail = pnew; // 把末尾设置当前最新的,实质是在移动末尾
        }
    }
 
    public static void main(String[] args) {
        Linklist ll = new Linklist();
        int a[] = new int[10];
        for (int i = 0; i < a.length; i++) {
            a[i] = i;
        }
        ll.createlink(a);
        //测试搜索的方法
        ll.searchlink(1);
    }
 
    // 搜索的方法
    public void searchlink(int value) {
        LNode ptr;
        ptr = head.getNext();
        while (ptr != null) {
            if (value == ptr.getData()) {
                System.out.println("找到数据:" + ptr.getData());
                break;
            } else {
                ptr = ptr.getNext();
            }
        }
        if (ptr == null) {
            System.out.println("整个遍历完了,没找到数据");
        }
    }
     
    //删除的方法
    public void deletelink(int value){
        LNode  p = head;
        LNode ptr = head.getNext();
        while(ptr != null){
            if(ptr.getData() == value){
                p.setNext(ptr.getNext());//此处覆盖
                System.out.println("删除成功");
                break;
            }else{
                p = ptr;
                ptr = ptr.getNext();
            }
        }
    }
     
    //定义插入节点发方法
    public void insertlink(int pot,int value){
        LNode ptr;
        LNode pnew;
        ptr = head.getNext();
        while(ptr != null){
            if (pot == ptr.getData()){
                pnew = new LNode ();
                pnew.setData(value);
                pnew.setNext(ptr.getNext());
                ptr.setNext(pnew);
                System.out.println("插入成功");
                break;
            }else{
                ptr = ptr.getNext();
            }
        }
        if (ptr == null){
            System.out.println("插入数据失败");
        }
    }
     
    //循环打印出所有的
    public void printLink(){
        LNode ptr;
        ptr = head.getNext();
        while (ptr != null){
            System.out.println(ptr.getData());
            ptr = ptr.getNext();
        }
    }
     
 
}

 

posted @   lifeng_study  阅读(246)  评论(0编辑  收藏  举报
编辑推荐:
· ASP.NET Core 模型验证消息的本地化新姿势
· 对象命名为何需要避免'-er'和'-or'后缀
· SQL Server如何跟踪自动统计信息更新?
· AI与.NET技术实操系列:使用Catalyst进行自然语言处理
· 分享一个我遇到过的“量子力学”级别的BUG。
阅读排行:
· C# 中比较实用的关键字,基础高频面试题!
· .NET 10 Preview 2 增强了 Blazor 和.NET MAUI
· 为什么AI教师难以实现
· 如何让低于1B参数的小型语言模型实现 100% 的准确率
· AI Agent爆火后,MCP协议为什么如此重要!
点击右上角即可分享
微信分享提示