Java_程序表分享
先看代码后看分享
1. 程序表代码
上面是程序表残缺代码和正文
package ShunXuBiao;
import java.util.Arrays;
import java.util.Scanner;
public class SequentialList<c> {private int[] sxb;// 申明程序表
private int length = 0 ;// 定义长度
Scanner input = new Scanner(System.in); // 从键盘输入
private int Kxg = input.nextInt();// 依据不同状况定义一个能够进行随时批改的样本空间最大值
public SequentialList() {this.sxb = new int[Kxg];// 定义程序表样本空间最大值
this.length = 0;// 初始化元素个数为 0
}
public void add(int a) {sxb[length] = a;// 给样本空间的第一个地位赋值
length++;// 每存入一个元素,长度就 +1
if (length > Kxg - 1)// 如果地位超出空间样本最大值,就抛出异样
throw new RuntimeException("结构线性表,长度越界");
}
public int insert(int b, int c) {// 插入地位用 b 代表,插入元素用 c 代表
if (length == sxb.length)// 元素长度恰好与样本空间最大值统一
throw new RuntimeException("地位已满,不可插入新的元素");// 产生上溢
if (b < 1 || b > length + 1)
throw new RuntimeException("地位异样");// 插入地位不在长度范畴之内
for (int j = length; j >= b; j--) {// 从元素的最大处开始往前一一后移
sxb[j] = sxb[j - 1];// 从插入地位当前的元素全副都向后移一位
}
sxb[b - 1] = c;// 将插入元素给到地位 b 处
return length;
}
public int locate(int d) {// 查问数值用 d 代表
int result = 0;// 定义一个能够存储查问数值地位的值
for (int i = length - 1; i >= 0; i--) {// 从元素的最大处开始往前一一查找
if (sxb[i] == d) {// 当该下标取到的值与查问值统一时
result = i + 1;// 将该查问数值的地位给到 result
break;
}
}
return result;// 返回记录的该地位
}
public int delete(int f) {// 删除的数值用 f 代表
if (f < 1 || f > length + 1) {throw new RuntimeException("地位异样");// 插入地位不在长度范畴之内
}
int BaoLiu = sxb[f - 1];// 做一个删除元素的记录备份
for (int j = f - 1; j < length+1; j++) {sxb[j] = sxb[j + 1];
}// 让删除地位的元素成为他后一地位的元素
length--;// 删除后长度 -1
return BaoLiu;// 返回该记录该删除的元素
}
public int getResult(int e) {// 地位用 e 代表
return sxb[e - 1];// 输入地位 e 的元素
}
public String getSxb() {return (Arrays.toString(sxb));
}// 用于失去程序表
public int getLength() {return length+1;}// 用于失去长度数值
}
class ShiJian{// 实际类
public static void main(String[] args) {System.out.println("请您确定样本空间的最大值:");
int[] sxb = {1,3,5,7,9};// 定义我要退出程序表的数组
SequentialList sj = new SequentialList();
// 将 sxb 数组中所有的元素顺次退出到程序表中
for (int i =0;i<sxb.length;i++){sj.add(sxb[i]);
}
// 输入以后程序表
System.out.println("确定后样本空间最大值后,当初的程序表是"+sj.getSxb());
// 在第 4 个地位插入值为 15 的元素
System.out.println("将在第 4 个地位插入值为 15 的元素,插入前程序表长度是"+sj.insert(4,15));
// 输入以后程序表
System.out.println("插入后程序表是"+sj.getSxb());
// 输入程序表的长度
System.out.println("插入后程序表长度是"+sj.getLength());
// 从键盘读入一个值,在程序表中查找该值并将后果输入
System.out.println("请输出一个值,咱们将在程序表中查找该值并将后果输入:");
Scanner input = new Scanner(System.in);
int a = input.nextInt();
System.out.println("经查找后,该值的地位是在程序表的第"+sj.locate(a)+"位");
// 从键盘读入一个值 i,在程序表中查找第 i 个元素并将后果输入
System.out.println("请输出一个数,咱们将把在程序表中数到的这个元素找到并将后果输入:");
int b = input.nextInt();
System.out.println("这个元素输入的值为"+sj.getResult(b));
// 从键盘读入一个值 i,删除程序表中第 i 个元素
System.out.println("请输出一个数,咱们将在程序表中数到该地位,并删除其元素的值:");
int c = input.nextInt();
System.out.println("删除的元素是"+sj.delete(c));
// 输入删除后的线性表
System.out.println("删除后程序表是"+sj.getSxb());
}
}
2. 什么是程序表
程序表 1 是在计算机内存中以数组的模式保留的线性表,线性表的顺序存储是指用一组地址间断的存储单元顺次存储线性表中的各个元素、使得线性表中在逻辑构造上相邻的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系,采纳顺序存储构造的线性表通常称为程序表。程序表是将表中的结点顺次寄存在计算机内存中一组地址间断的存储单元中
3. 了解程序表
首先咱们要去了解一下程序表,咱们做一个失常的插入,如下图所示
当程序表满了之后,在进行插入,便会溢出,如下图所示
当你想删除某个地位的元素时,如下图所示
4. 程序表的实现
4.1 申明并增加第一个元素
public class SequentialList<c> {private int[] sxb; // 申明程序表
private int length = 0 ; // 定义长度
Scanner input = new Scanner(System.in); // 从键盘输入
private int Kxg = input.nextInt(); // 依据不同状况定义一个能够进行随时批改的样本空间最大值
public SequentialList() {this.sxb = new int[Kxg]; // 定义程序表样本空间最大值
this.length = 0; // 初始化元素个数为 0
}
}
4.2 做一个插入
public int insert(int b, int c) { // 插入地位用 b 代表,插入元素用 c 代表
if (length == sxb.length) // 元素长度恰好与样本空间最大值统一
throw new RuntimeException("地位已满,不可插入新的元素"); // 产生上溢
if (b < 1 || b > length + 1)
throw new RuntimeException("地位异样"); // 插入地位不在长度范畴之内
for (int j = length; j >= b; j--) { // 从元素的最大处开始往前一一后移
sxb[j] = sxb[j - 1]; // 从插入地位当前的元素全副都向后移一位
}
sxb[b - 1] = c; // 将插入元素给到地位 b 处
return length;
}
4.3 做一个查问
public int locate(int d) { // 查问数值用 d 代表
int result = 0; // 定义一个能够存储查问数值地位的值
for (int i = length - 1; i >= 0; i--) { // 从元素的最大处开始往前一一查找
if (sxb[i] == d) { // 当该下标取到的值与查问值统一时
result = i + 1; // 将该查问数值的地位给到 result
break;
}
}
return result; // 返回记录的该地位
}
4.4 做一个删除
public int delete(int f) { // 删除的数值用 f 代表
if (f < 1 || f > length + 1) {throw new RuntimeException("地位异样"); // 插入地位不在长度范畴之内
}
int BaoLiu = sxb[f - 1]; // 做一个删除元素的记录备份
for (int j = f - 1; j < length+1; j++) {sxb[j] = sxb[j + 1];
} // 让删除地位的元素成为他后一地位的元素
length--; // 删除后长度 -1
return BaoLiu; // 返回该记录该删除的元素
}
4.5 做一些输入
public int getResult(int e) { // 地位用 e 代表
return sxb[e - 1]; // 输入地位为 e 的元素
}
public String getSxb() {return (Arrays.toString(sxb));
} // 用于失去程序表
public int getLength() {return length+1;} // 用于失去长度数值
4.5 实现调用类
class ShiJian{// 实际类
public static void main(String[] args) {System.out.println("请您确定样本空间的最大值:");
int[] sxb = {1,3,5,7,9}; // 定义我要退出程序表的数组
SequentialList sj = new SequentialList();
// 将 sxb 数组中所有的元素顺次退出到程序表中
for (int i =0;i<sxb.length;i++){sj.add(sxb[i]);
}
// 输入以后程序表
System.out.println("确定后样本空间最大值后,当初的程序表是"+sj.getSxb());
// 在第 4 个地位插入值为 15 的元素
System.out.println("将在第 4 个地位插入值为 15 的元素,插入前程序表长度是"+sj.insert(4,15));
// 输入以后程序表
System.out.println("插入后程序表是"+sj.getSxb());
// 输入程序表的长度
System.out.println("插入后程序表长度是"+sj.getLength());
// 从键盘读入一个值,在程序表中查找该值并将后果输入
System.out.println("请输出一个值,咱们将在程序表中查找该值并将后果输入:");
Scanner input = new Scanner(System.in);
int a = input.nextInt();
System.out.println("经查找后,该值的地位是在程序表的第"+sj.locate(a)+"位");
// 从键盘读入一个值 i,在程序表中查找第 i 个元素并将后果输入
System.out.println("请输出一个数,咱们将把在程序表中数到的这个元素找到并将后果输入:");
int b = input.nextInt();
System.out.println("这个元素输入的值为"+sj.getResult(b));
// 从键盘读入一个值 i,删除程序表中第 i 个元素
System.out.println("请输出一个数,咱们将在程序表中数到该地位,并删除其元素的值:");
int c = input.nextInt();
System.out.println("删除的元素是"+sj.delete(c));
// 输入删除后的线性表
System.out.println("删除后程序表是"+sj.getSxb());
}
}
以上就是本文全部内容,如果对你有帮忙,能够顺手点个赞,这对我真的很重要
- 来自搜狗百科:https://baike.sogou.com/v7855… 程序表 ↩