java实现顺序表的增加,删除,查找,打印

博主上个学期学了数据结构(C语言版),第一章就是顺序表。这个学期学的是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 SortedList{//按升序排列的顺序表
  13.     final int MaxNum=100//最大容量
  14.     int[] a=new int[MaxNum];//如果期望在构造对象时决定顺序表的容量,如何处理?
  15.     int len;
  16.     void init(){ len=0;}
  17.     void add(int x){//将x插入顺序表的合适位置【参数列表与C不同】
  18.         if(len==MaxNum){
  19.             System.out.print("表已满,无法插入!"); return;
  20.         }
  21.         int i;
  22.         for(i=len-1; i>=0&&a[i]>x; i--)//找合适位置,同时移出空位
  23.             a[i+1]=a[i];
  24.         a[i+1]=x;
  25.         len++;
  26.     }
  27.     int findX(int x){//在顺序表中查找值为x的元素,返回其下标。找不到则返回-1
  28.         if(len==0)return -1;
  29.         int mid,low,high;
  30.         low=0;high=len-1;
  31.         while(low<=high){
  32.             mid=(low+high)/2;
  33.             if(x==a[mid])return mid;
  34.             if(x<a[mid])high=mid-1;
  35.             else low=mid+1;
  36.         }
  37.         return -1;
  38.     }
  39.     void deleteX(int x){//删除第一个值为x的元素
  40.         if(len==0return;
  41.         int pos,i;
  42.         //注意:for(int i=...)其中i的作用域仅限于该for循环,出循环则无意义
  43.         pos=findX(x);
  44.         if(pos==-1)return;
  45.         for(i=pos+1; i<len; i++)
  46.             a[i-1]=a[i];//找到合适位置
  47.         len--;
  48.     }
  49.     void showInfo(){
  50.         for(int i=0; i<len; i++)
  51.             System.out.print(a[i]+" ");
  52.     }
  53. }
  54. class App{
  55.     static SortedList creatList(){//输入一组数据,以-1结束,创建有序表
  56.         //这个方法代表着在外部使用SortedList类
  57.         SortedList sL=new SortedList();
  58.         Scanner sc=new Scanner(System.in);
  59.         int x;
  60.         x=sc.nextInt();
  61.         while(x!=-1){
  62.             sL.add(x); //注:由于创建的是有序表,不能将此句改成sL.a[i]=x;
  63.             x=sc.nextInt();
  64.         }
  65.         return sL;
  66.     }
  67.     public static void main (String[] args) {
  68.         System.out.print("请输入一组数,-1结束:\n");
  69.         SortedList sL=creatList();
  70.         System.out.print("有序表数据为:\n");
  71.         sL.showInfo();
  72.         System.out.print("\n请输入要删除的数:");
  73.         Scanner sc=new Scanner(System.in);
  74.         int x=sc.nextInt();
  75.         sL.deleteX(x);
  76.         System.out.print("有序表数据为:\n");
  77.         sL.showInfo();
  78.         System.out.print("\n请输入要插入的数:");
  79.         x=sc.nextInt();  sL.add(x);
  80.         System.out.print("有序表数据为:\n");
  81.         sL.showInfo();
  82.     }
  83. }

发表评论

目前评论:1