您好,欢迎来到吉趣旅游网。
搜索
您的当前位置:首页实习报告一

实习报告一

来源:吉趣旅游网


班级:信息1102 姓名:贾孟涛 ======== 实习报告一 “顺序表类的定义”演示程序 ==================

(一)、程序的功能和特点

该程序不仅可以显示输出线性表,求出线性表的长度,还拥有对线性表的

元素进行添加、删除、修改以及查找操作;它还可以定位元素的前驱和后继,判断线性表是否为空表或为满表。

(二)、程序的算法设计 “顺序表类的定义”算法:

1.【逻辑结构与存储结构设计】

逻辑结构:每个元素之间是相邻的

存储结构:通过数组存放,每个元素之间也是相邻的

2.【基本操作设计】

数组在计算机内存中可用于存放一串连续的元素,线性表在逻辑结构上是连续的,所以可以用数组存放线性表中的元素,使其在物理结构上也是连续的。

3.【算法设计】 查找固定元素 i=0 否 i<=last i++ 是

i=-1 是

data[i]!=x

否 i

在表中第i个位置插入新元素

x , i IsFull()||i<0|| i>last+1 是 last++ j=last

j>i

data[j]=data[j-1]

j--

否 false 否 data[i]=x true 删除表中已有的元素

x i=Find(x) 是 i<0 否 j=i true

否 j

last-- data[j]=data[j+1]

true j--

4.【高级语言代码】 查找

public int Find( float x ) { //参数:待查元素 int i = 0;

while ( i <= last && data[i] != x ) i++;

if ( i > last ) return -1; //没有查找到 else return i; //返回x的序号 } 插入

public boolean Insert( float x, int i ) { //参数:待插入的元素,插入位置

if ( IsFull( ) ) return false; //表满

if ( i < 0 || i > last+1 )

return false; //插入位置不合适 //有不允许元素重复的要求时

if ( Find ( x ) >= 0 ) return false;

last++; //可以插入元素 for ( int j = last; j > i; j-- ) data[j] = data[j-1]; data[i] = x;

return true; //插入成功 }

删除

public boolean Remove ( float x ) { //参数:待删元素 int i = Find (x); //查找x的位置

if ( i < 0 ) return false; //表中没有 x for ( int j = i; j < last; j++ ) data[j] = data[j+1]; last--;

return true; //成功删除 }

(三)、程序中类的设计 “SeqList”类:

1.【逻辑结构与存储结构】

逻辑结构:每个元素之间是相邻的

存储结构:通过数组存放,每个元素之间也是相邻的

2.【主要成员变量说明】

float data[]; //float型数组的顺序存储结构

int MaxSize; //数组空间长度(能容纳的元素数) int last; //当前数组最后元素下标(从0起)

3.【主要成员方法说明】 /*求线性表的长度*/

public int Length()

/*求线性表的空间*/

public int getMaxSize()

/*查找固定元素*/

public int Find(float x) //参数:待查元素x

/*获取第i个元素*/

public float GetElement(int i)

//参数:元素的下标

/*在表中第i个位置插入新元素x*/

public boolean Insert(float x,int i)

//参数:待插元素,插入位置

/*删除表中已有的元素x*/

public boolean Remove(float x) //参数:待删元素

/*定位到元素x的后继*/

public int Next(float x) //参数:当前元素

/*替换第i个元素为x*/

public boolean Replace(int i,float x) //参数:需要替换的元素下标,替换为x

4.【高级语言代码】 顺序表(cSeqList)类

public class cSeqList{ //顺序表类

float data[]; //float型数组的顺序存储结构 int MaxSize; //数组空间长度(能容纳的元素数) int last; //当前数组最后元素下标(从0起) //构造函数(参数:空间大小) public cSeqList(int size) {

if ( size <= 0 ) return; //参数不合理 MaxSize = size; //空间大小 last = -1; //约定空表的标志 data = new float[MaxSize];

if ( data == null ) //分配失败 MaxSize = 0; }

//求线性表的长度

public int Length() { return last+1; } //求线性表的空间

public int getMaxSize() { return MaxSize; } //在表中从前向后顺序查找 x

public int Find( float x ) { //参数:待查元素 int i = 0;

while ( i <= last && data[i] != x ) i++;

if ( i > last ) return -1; //没有查找到 else return i; //返回x的序号 }

//得到第i个元素

public float GetElement ( int i ) { //参数:元素序号 //返回第i个元素的值

return i < 0 || i > last ? null : data[i]; }

//在表中第 i 个位置插入新元素 x

public boolean Insert( float x, int i ) { //参数:待插入的元素,插入位置

if ( IsFull( ) ) return false; //表满 if ( i < 0 || i > last+1 )

return false; //插入位置不合适 //有不允许元素重复的要求时

if ( Find ( x ) >= 0 ) return false;

last++; //可以插入元素 for ( int j = last; j > i; j-- ) data[j] = data[j-1]; data[i] = x;

return true; //插入成功 }

//删除表中的已有元素 x

public boolean Remove ( float x ) { //参数:待删元素 int i = Find (x); //查找x的位置

if ( i < 0 ) return false; //表中没有 x for ( int j = i; j < last; j++ ) data[j] = data[j+1]; last--;

return true; //成功删除 }

//定位到元素x的后继

public int Next ( float x ) { //参数:元素x int i = Find (x); //查找x的位置

return ( i == -1 || i == last ) ? -1 : i+1; //返回元素x的后继的地址 }

//定位到元素x的前驱

public int Prior ( float x ){ //参数:元素x int i = Find (x); //查找x的位置 return ( i <= 0 ) ? -1 : i-1; //返回元素x的后继的地址 }

//替换第i个元素为x

public boolean Replace ( int i , float x ){ //参数:序号i , 元素x

if ( i <0 || i > last) return false; data[i]=x; return true; }

//判断线性表是否为空表

public boolean IsEmpty ( ) { return last ==-1; } //判断线性表是否为满表

public boolean IsFull ( ) { return last == MaxSize-1; } //显示输出线性表

public void display () {

System.out.println(\"MaxSize=\"+MaxSize); System.out.println(\"last=\"+last); for(int i=0;i<=last;i++)

System.out.print(\" \"+data[i]); System.out.println();; }

public static void main(String args[]){ }

} //顺序表cSeqList类定义完毕

(四)、程序的输入输出和运行结果截屏

输入1、2、5.1、16、13,输出结果如下图所示

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- jqkq.cn 版权所有 赣ICP备2024042794号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务