java实现单链表的增加,删除,查找,打印

来源:互联网 发布:石家庄餐饮软件 编辑:程序博客网 时间:2024/06/08 04:49

原文地址:http://liuyanzhao.com/2230.html
刚才传了一个java实现顺序表的基本功能的代码,下面是单链表的。同为笔记,以为回顾
文件名App.java

/*编写类,实现如下功能: *1、创建有序单链表 *2、包含如下基本操作:初始化、增加、删除、查找、打印元素 *   注意:初始化不同于用new 创建元素。 * *目的: * 1、理解成员变量、成员方法的含义 *    注意:相关方法的参数列表与C不同,顺序表成员的存取也与C不同 * 2、理解类=成员变量+成员方法,以及其使用方式。 **/import java.util.Scanner;class SortedLinkedList{    class Node{ //定义单链表的结点类型(内部类,就是定义在类中的class)        int data;        Node next;    }    Node head; //链表的表头指针    void init(){ head=new Node();  head.next=null;}//初始化    void add(int x ){ //将x加入升序链表        Node pre,p,q;        for(pre=head, p=head.next; p!=null; p=p.next,pre=pre.next)            if(p.data>x)break;        q=new Node(); q.data=x;        q.next=p; pre.next=q; //将q插入到pre和p之间    }    Node find(int x){//在表中重找x,找到则返回其前驱结点的指针,找不到则返回null        Node pre,p;        pre=head;p=head.next;        while(p!=null && p.data!=x){pre=pre.next; p=p.next;}        if(p==null)return null;        return pre;    }    void del(int x){//从链表中删除值为x的元素        Node pre=find(x);        if(pre==null) return;          //没找到        else pre.next=pre.next.next; //实施删除    }    void showInfo(){        for(Node p=head.next; p!=null; p=p.next)            System.out.print(p.data+" ");    }}class App{    public static void main (String[] args) {        SortedLinkedList L=new SortedLinkedList();        L.init();        System.out.print("请输入一组数,以-1结束:");        Scanner sc=new Scanner(System.in);        int x=sc.nextInt();        while(x!=-1){ L.add(x);   x=sc.nextInt();   }        System.out.print("有序链表为:");        L.showInfo();        System.out.print("\n请输入要删除的数:");        x=sc.nextInt();   L.del(x);        System.out.print("有序链表为:");        L.showInfo();        System.out.print("\n请输入要插入的数:");        x=sc.nextInt();   L.add(x);        System.out.print("有序链表为:");        L.showInfo();    }}

原文地址:http://liuyanzhao.com/2230.html

0 0
原创粉丝点击