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

刚才传了一个java实现顺序表的基本功能的代码,下面是单链表的。同为笔记,以为回顾 文件名App.java
  1. /*编写类,实现如下功能:
  2.  *1、创建有序单链表
  3.  *2、包含如下基本操作:初始化、增加、删除、查找、打印元素
  4.  *   注意:初始化不同于用new 创建元素。
  5.  *
  6.  *目的:
  7.  * 1、理解成员变量、成员方法的含义
  8.  *    注意:相关方法的参数列表与C不同,顺序表成员的存取也与C不同
  9.  * 2、理解类=成员变量+成员方法,以及其使用方式。
  10.  **/
  11. import java.util.Scanner;
  12. class SortedLinkedList{
  13.     class Node{ //定义单链表的结点类型(内部类,就是定义在类中的class)
  14.         int data;
  15.         Node next;
  16.     }
  17.     Node head; //链表的表头指针
  18.     void init(){ head=new Node();  head.next=null;}//初始化
  19.     void add(int x ){ //将x加入升序链表
  20.         Node pre,p,q;
  21.         for(pre=head, p=head.next; p!=null; p=p.next,pre=pre.next)
  22.             if(p.data>x)break;
  23.         q=new Node(); q.data=x;
  24.         q.next=p; pre.next=q; //将q插入到pre和p之间
  25.     }
  26.     Node find(int x){//在表中重找x,找到则返回其前驱结点的指针,找不到则返回null
  27.         Node pre,p;
  28.         pre=head;p=head.next;
  29.         while(p!=null && p.data!=x){pre=pre.next; p=p.next;}
  30.         if(p==null)return null;
  31.         return pre;
  32.     }
  33.     void del(int x){//从链表中删除值为x的元素
  34.         Node pre=find(x);
  35.         if(pre==nullreturn;          //没找到
  36.         else pre.next=pre.next.next; //实施删除
  37.     }
  38.     void showInfo(){
  39.         for(Node p=head.next; p!=null; p=p.next)
  40.             System.out.print(p.data+" ");
  41.     }
  42. }
  43. class App{
  44.     public static void main (String[] args) {
  45.         SortedLinkedList L=new SortedLinkedList();
  46.         L.init();
  47.         System.out.print("请输入一组数,以-1结束:");
  48.         Scanner sc=new Scanner(System.in);
  49.         int x=sc.nextInt();
  50.         while(x!=-1){ L.add(x);   x=sc.nextInt();   }
  51.         System.out.print("有序链表为:");
  52.         L.showInfo();
  53.         System.out.print("\n请输入要删除的数:");
  54.         x=sc.nextInt();   L.del(x);
  55.         System.out.print("有序链表为:");
  56.         L.showInfo();
  57.         System.out.print("\n请输入要插入的数:");
  58.         x=sc.nextInt();   L.add(x);
  59.         System.out.print("有序链表为:");
  60.         L.showInfo();
  61.     }
  62. }

发表评论

目前评论:2

  • avatar 夏日博客

    java语言中的增删改查麽。。