顺序表
主代码部分:
package com.struct.test;
import java.util.Scanner;
import javax.swing.text.Position;
/**
* 顺序表:使用数组存放线性表
*
* @author Administrator
*
*/
public class Sqlist {
/**
* 存贮顺序表的数组
*/
int[] data;
/**
* 顺序表的长度
*/
int length;
public Sqlist(int[] data, int length) {
super();
this.data = data;
this.length = length;
}
/**
* 打印输出顺序表中的内容
*/
public void print(){
for (int i = 0; i < length; i++) {
System.out.print(data[i]+"\t");
}
System.out.println();
}
public void init(){
Scanner scanner = new Scanner(System.in);
for (int i = 0; i < length; i++) {
data[i] = scanner.nextInt();
}
scanner.close();
}
/**
* 在顺序表中下标为position的位置添加一个值为value的元素
* @param value
* @param position
*/
public void insert(int value, int position){
//1. 插入位置是否合法
//2. 是否表满
if(position < 0 || position >= data.length){
System.out.println("插入失败,插入位置不合法");
return;
}
if(length >= data.length){
System.out.println("插入失败,表满");
}
//插入逻辑
for(int i=length;i>=position;i--) {
data[i]=data[i-1];
}
data[position]=value;
length++;
for(int i=0;i<length;i++) {
System.out.print(data[i]+"\t");
}
System.out.println();
}
public void delete(int position) {
if(position<0||position>data.length) {
System.out.println("删除失败,位置不合法");
return;
}
if(data.length==0) {
System.out.println("删除失败,表为空");
}
for(int i=position;i<length-1;i++) {
data[i]=data[i+1];
}
length--;
}
}
测试代码部分:
package com.struct.test;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
//创建一个长度为3的线性表
Sqlist sqlist = new Sqlist(new int[10], 3);
System.out.println("请输入一个长度为"+sqlist.length+"的数组:");
sqlist.init();
sqlist.print();
sqlist.insert(10, 1);
sqlist.delete(1);
sqlist.print();
}
}
浙公网安备 33010602011771号