数据结构实验报告-实验:1线性表的顺序存储和操作实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构实验报告-实验:1线性表的顺序存储和操作实现
信息管理学院专业课实验报告
上机日期:2016 年 3 月18日上机地点与机号:Sc614 指导教师:李爱军
班级: 2014级信息一班学号: 201408010127 上机人:王坚
一、实验名称:线性表的顺序存储和操作实现
二、上机目的:
通过JA V A进行顺序存储线性表操作
三、上机内容:
通过Sequencelist类实现List接口实现顺序存储线性表的功能t
四、程序清单与测试数据:(可附页)
public class chap3_1 {
public static void main(String[] args) {
// TODO自动生成的方法存根
List list1=new sequenceList(10);
int[] a={20,16,38,42,29};
for(int i=0;i int n1=(Integer)list1.remove(2); list1.add(80, 3); int n2=(Integer)list1.value(4); list1.modify(33, 4); System.out.println("n1,n2="+n1+","+n2); list1.nextOrder(); System.out.println("线性表list长度:"+list1.size()); List list2=list1.sort(); list2.nextOrder(); System.out.println(); list2.preOrder(); System.out.println("线性表list2长度:"+list2.size()); } } public interface List { Object value(int pos); boolean add(Object obj,int pos); Object remove(int pos); int find(Object obj,int pos); boolean modify(Object obj,int pos); boolean isEmpty(); int size(); void nextOrder(); void preOrder(); void clear(); List sort(); } public class sequenceList implements List { final int maxSize=10; private int length; private Object[] listArray; public sequenceList(){ //无参数的构造函数的定义 length=0; //线性表初始为空,即长度为0 listArray=new Object[maxSize];//数组初始长度为maxSize的值为10 } public sequenceList(int n){//带初始长度参数的构造函数的定义if(n<=0){ System.out.println("数组长度要大于0,否则退出程序运行"); System.exit(1); } length=0;//线性表的初始长度为0 listArray=new Object[n];//数组的初始长度为n的值 } public Object value(int pos){//返回线性表中第 if(pos<1||pos>length){ System.out.println("参数pos的值不合法,无法得到元素!"); return null; } return listArray[pos-1]; } public boolean add(Object obj,int pos){ if(pos<1||pos>length+1){ System.out.println("参数pos的值不合法,无法插入元素!"); return false; } if(length==listArray.length){ Object[] p=new Object[length*2]; for(int i=0;i listArray=p; } for(int i=length;i>=pos;i--) listArray[i]=listArray[i-1]; listArray[pos-1]=obj; length++; return true; } public Object remove(int pos){ if(pos<1||pos>length){ System.out.println("参数pos的值不合法,无法删除元素!"); return null; } Object x=listArray[pos-1]; for(int i=pos;i<=length-1;i++) listArray[i-1]=listArray[i]; length--; return x; } public int find(Object obj,int pos){ if(pos<1||pos>length);{ System.out.println("参数pos的值不合法,无法查找元素!"); System.exit(1); } for(int i=pos-1;i if(listArray[i].equals(obj)) return i+1; return -1; } public boolean modify(Object obj,int pos){ if(pos<1||pos>length){ System.out.println("参数pos的值不合法,无法修改元素!"); return false; } listArray[pos-1]=obj; return true; } public boolean isEmpty(){ return length==0; } public int size(){ return length; } public void nextOrder(){ for(int i=0;i System.out.println(listArray[i].toString()); } public void preOrder(){ for(int i=length-1;i>=0;i--) System.out.println(listArray[i].toString()); } public void clear(){ length=0; } public List sort(){ sequenceList list; list=new sequenceList(length); list.length=length; for(int i=0;i list.listArray[i]=listArray[i]; int i,j; Comparable x,y; for(i=1;i x=(Comparable)list.listArray[i]; for(j=i-1;j>=0;j--){ y=(Comparable)list.listArray[j]; if(pareTo(y)<0)