博主上个学期学了数据结构(C语言版),第一章就是顺序表。这个学期学的是java,同样可以实现之前的代码。这里把代码贴出来,方便以后学习,回顾。
文件名:App.java
文件名:App.java
- /*编写类,实现如下功能:
- *1、创建有序顺序表
- *2、包含如下基本操作:初始化、增加、删除、查找、打印元素
- * 注意:初始化不同于用new 创建元素。
- *
- *目的:
- * 1、理解成员变量、成员方法的含义
- * 注意:相关方法的参数列表与C不同,顺序表成员的存取也与C不同
- * 2、理解类=成员变量+成员方法,以及其使用方式。
- **/
- import java.util.Scanner;
- class SortedList{//按升序排列的顺序表
- final int MaxNum=100; //最大容量
- int[] a=new int[MaxNum];//如果期望在构造对象时决定顺序表的容量,如何处理?
- int len;
- void init(){ len=0;}
- void add(int x){//将x插入顺序表的合适位置【参数列表与C不同】
- if(len==MaxNum){
- System.out.print("表已满,无法插入!"); return;
- }
- int i;
- for(i=len-1; i>=0&&a[i]>x; i--)//找合适位置,同时移出空位
- a[i+1]=a[i];
- a[i+1]=x;
- len++;
- }
- int findX(int x){//在顺序表中查找值为x的元素,返回其下标。找不到则返回-1
- if(len==0)return -1;
- int mid,low,high;
- low=0;high=len-1;
- while(low<=high){
- mid=(low+high)/2;
- if(x==a[mid])return mid;
- if(x<a[mid])high=mid-1;
- else low=mid+1;
- }
- return -1;
- }
- void deleteX(int x){//删除第一个值为x的元素
- if(len==0) return;
- int pos,i;
- //注意:for(int i=...)其中i的作用域仅限于该for循环,出循环则无意义
- pos=findX(x);
- if(pos==-1)return;
- for(i=pos+1; i<len; i++)
- a[i-1]=a[i];//找到合适位置
- len--;
- }
- void showInfo(){
- for(int i=0; i<len; i++)
- System.out.print(a[i]+" ");
- }
- }
- class App{
- static SortedList creatList(){//输入一组数据,以-1结束,创建有序表
- //这个方法代表着在外部使用SortedList类
- SortedList sL=new SortedList();
- Scanner sc=new Scanner(System.in);
- int x;
- x=sc.nextInt();
- while(x!=-1){
- sL.add(x); //注:由于创建的是有序表,不能将此句改成sL.a[i]=x;
- x=sc.nextInt();
- }
- return sL;
- }
- public static void main (String[] args) {
- System.out.print("请输入一组数,-1结束:\n");
- SortedList sL=creatList();
- System.out.print("有序表数据为:\n");
- sL.showInfo();
- System.out.print("\n请输入要删除的数:");
- Scanner sc=new Scanner(System.in);
- int x=sc.nextInt();
- sL.deleteX(x);
- System.out.print("有序表数据为:\n");
- sL.showInfo();
- System.out.print("\n请输入要插入的数:");
- x=sc.nextInt(); sL.add(x);
- System.out.print("有序表数据为:\n");
- sL.showInfo();
- }
- }
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏