java数据结构实验代码之升序顺序表
- 格式:doc
- 大小:234.50 KB
- 文档页数:9
数据结构实验报告 学院:管理学院 班级:13电子商务(1)班 姓名:廖秋君 学号:3213004779
2014年 10月 23 日 目录 一、需求分析………………………………………
问题描述…………………………………………
基本要求…………………………………………
实现说明…………………………………………
二、设计目的……………………………………… 三、概要设计……………………………………… 基本框架图……………………………………… 设计想法………………………………………… 四、详细设计………………………………………
顺序表接口…………………………………… 顺序表类………………………………………… 测试类……………………………………… 五、测试结果………………………………………
基本数据…………………………………………
操作截图………………………………………… 六、心得体会……………………………………… 题目:顺序表 一、需求分析 【问题描述】 设计按升序排列顺序表类,实现插入、删除等操作,元素插入位置由其值决定。
【基本要求】 创建一个顺序表,表中元素按升序排列,对顺序表进行删除、插入操作,插入元素的插入位置由元素值大小决定。
【实现说明】 通过数组实现顺序表的插入、删除操作。
二、设计目的 1、熟悉掌握java和数据结构的基本知识和技能; 2、能够利用所学的基本知识和技能,解决简单的顺序表设计问题; 3、复习学过的知识,思考新的问题;
三、概要设计 (1)基本框架图: (2)设计想法:
1、创建顺序表接口 2、设计顺序表类实现接口 3、创建数组 4、通过对数组的插入、删除实现顺序表的插入、删除 5、输出表中元素 四、详细设计
1、顺序表接口类: interface LList
数组实现 建立一个顺序表 创建一个含有元素的数组 插入一个元素 删除一个元素 完成操作
升序顺序表 { boolean isEmpty(); //判断线性表是否空 int length(); //返回线性表长度 int get(int i); //返回第i(i≥0)个元素 void set(int i, int x); //设置第i个元素值为x void insert( int x); //插入x作为元素 void append(int x); //在线性表最后插入x元素 void remove(int i); //删除第i个元素 void removeAll(); //删除线性表所有元素 }
2、顺序表类及部分方法: class SeqList implements LList //顺序表类实现LL接口 { protected int[] element; //整型数组,保护成员 protected int len; //顺序表长度,记载元素个数
public SeqList(int[] ele) { //构造方法 if (ele == null ||ele.length == 0) { this.len = 0; } else { element = ele; len = ele.length; } }
public boolean isEmpty() //判断顺序表是否空,若空返回true,O(1) { return this.len==0; }
public int length() //返回顺序表长度,O(1) { return this.len; }
public int get(int i) //返回第i(≥0)个元素。若i<0或大于表长则返回null,O(1) {
return 0; } //设置第i(≥0)个元素值为x。不操作 public void set(int i, int x) { }
//返回顺序表所有元素的描述字符串,形式为“(,)”,覆盖Object类的toString()方法 public String toString() { return null; //空表返回() }
//3. 顺序表的插入操作
public void insert( int x) //插入元素为x { int[] newA = new int[len + 1]; //创建一个新数组newA
for (int a=1;afor(int b=0;bif (element [a]int temp = element [a]; element [a] = element [b]; element [b] = temp;
} }
} int i = 0, j = 0; //i为element数组元素下标,j为newA数组元素下标 for ( ;i < element.length; i++, j++) {//判断插入元素所应在的位置 if (element[i] >= x) {//如果element元素大于x,则将x置于newA数组第j个位置 newA[j] = x; break; } else {//否则就将element中第i个元素置于newA中第j个元素 newA[j] = element[i]; } }
while (i < element.length) { //复制element中元素 newA[++j] = element[i]; i++; } element = newA; //更新插入x元素后的element数组 len++; System.out.print("插入后的数组为:"); for(int z=0;z System.out.print(element[z]+" "); } } public void append(int x) //在顺序表最后插入x元素 { insert( x); }
//4. 顺序表的删除操作 //删除第i(≥0)个元素。 public void remove(int i) { for (int a=1;afor(int b=0;bif (element [a]int temp = element [a]; element [a] = element [b]; element [b] = temp;
} }
} if (this.len==0 || i<0 || i>=this.len) //若i<0或i大于表长,不删除,返回。 return ;
int old = this.element[i]; for (int j=i; j this.element[j] = this.element[j+1]; this.element[this.len-1]=0; this.len--;
System.out.print("删除后的数组为:");
for(int z=0;z System.out.print(element[z]+" "); } }
public void removeAll() //删除线性表所有元素 { this.len=0; }}
3、测试类:
public class Test{ //主方法 public static void main(String args[]){ int testshu[]={1,20,9,27,30}; //创建testshu数组并赋予元素 SeqList on=new SeqList(testshu); //实例化 on.insert(7); //插入元素为7 System.out.println(" "); on.remove(3); //删除第3个元素 } }
五、测试结果
【基本数据】1、测试数组为{1,20,9,27,30} 2、数组顺序乱序 3、插入元素为7 4、删除位置为3
【操作截图】 1、运行文件,结果如图: