数据结构(Java编写):编辑顺序列表

一、题目描述

写一个顺序表类Seqlist,属性两个(int data[100] , int len),构造方法(),creatlist()(产生10个元素,分别是1,4,9,16,…,100 ),outputlist()(输出顺序表),locate()(查找值为x的位置,返回其下标),insert()(在第i个位置插入值x),delete()(删除第i个位置的元素),然后测试以上函数。

二、输出样式

请添加图片描述
请添加图片描述

三、代码展示

1、创建元素列表

  • 定义creatlist()
    public void CreateList(int len){
        int[] list = new int[len];
        for (int i=1; i<=len;i++){
            list[i-1] = ((int) Math.pow(i, 2));
            if (Arrays.toString(list).length() == len){
                break;
            }
        }
        this.data = list;
    }

2、输出顺序表

  • 定义outputlist(()
public void outputlist(){
        for (int i=0; i<(this.data.length); i++){ // 遍历输出
            System.out.print(data[i] + " ");
        }
        System.out.println();
    }

3、查找输入数的下标

  • 定义locate(()
public int locate(int x) {
        int index = -1;
        for (int i=0; i<(this.data.length); i++) {
            if (x == data[i]) {
                index = i;
            }
        }
//        System.out.println(index);
        return index;
    }

4、指定位置插入值

  • 定义insert(()
public boolean insert(int i, int x){
        boolean flug = true;
        if (this.len == this.data.length){
            this.data = Arrays.copyOf(this.data,this.data.length+1);
        }
        // 判断是否合法
        if (i < 0 || i>this.data.length-1){
            flug = false;
        }
        // 从x开始,之后的数向后移动一位
        for (int j = this.len-1; j>=i; j--){
            this.data[j+1] = this.data[j];
        }
        data[i] = x;
//        this.len++;
        return flug;
    }

5、删除指定的值

  • 定义delete(()
    public boolean delete(int x){
        int index = locate(x);
        for (int i = index; i<this.len - 1; i++){
            this.data[i] = this.data[i+1];
        }
        if (this.len == this.data.length){
            this.data = Arrays.copyOf(this.data,this.data.length-1);
        }
        return true;
    }

6、完整代码显示

package net.sjjg;

import java.util.Arrays;
import java.util.Scanner;

public class Seqlist {
    public static void main(String[] args) {
        Seqlist seqlist = new Seqlist();
        // 定义初始长度
        seqlist.len = 10;
        // 创建初始化顺序表
        seqlist.CreateList(seqlist.len);
        // 输出初始化顺序表
        System.out.println("顺序表初始化后输出:");
        seqlist.outputlist();
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入要查找的数:");
        int x = sc.nextInt();
        // 返回x下标
        int i = seqlist.locate(x);
        // 插入x1
        if (i == -1){
            System.out.println("下标返回错误!顺序表中没有【"+x+"】");
        } else {
            System.out.println(x + "在顺序表中的的下标为:[" + i + "]");
            System.out.print("请输入要插入的数:");
            int x1 = sc.nextInt();
            if (seqlist.insert(i,x1)){
                System.out.println("插入元素后输出:");
                seqlist.outputlist();
            } else {
                System.out.println("输入下标不合法");
            }
            // 执行删除语句
            System.out.print("输入要删除的数:");
            int del_num = sc.nextInt();
            if (seqlist.locate(del_num) == -1){
                System.out.println("下标返回错误!顺序表中没有【"+del_num+"】");
            } else {
                if (seqlist.delete(del_num)){
                    System.out.println("删除元素后输出:");
                    seqlist.outputlist();
                }
            }
        }
    }
    int[] data;
    int len;

    public Seqlist(){
        this.data = new int[10];
    }
//    产生10个元素,分别是1,4,9,16,...,100
    public void CreateList(int len){
        int[] list = new int[len];
        for (int i=1; i<=len;i++){
            list[i-1] = ((int) Math.pow(i, 2));
            if (Arrays.toString(list).length() == len){
                break;
            }
        }
        this.data = list;
    }

//    输出顺序表
    public void outputlist(){
        for (int i=0; i<(this.data.length); i++){ // 遍历输出
            System.out.print(data[i] + " ");
        }
        System.out.println();
    }
//    查找值为x的位置,返回其下标
    public int locate(int x) {
        int index = -1;
        for (int i=0; i<(this.data.length); i++) {
            if (x == data[i]) {
                index = i;
            }
        }
//        System.out.println(index);
        return index;
    }
//      在第i个位置插入值x
    public boolean insert(int i, int x){
        boolean flug = true;
        if (this.len == this.data.length){
            this.data = Arrays.copyOf(this.data,this.data.length+1);
        }
        // 判断是否合法
        if (i < 0 || i>this.data.length-1){
            flug = false;
        }
        // 从x开始,之后的数向后移动一位
        for (int j = this.len-1; j>=i; j--){
            this.data[j+1] = this.data[j];
        }
        data[i] = x;
//        this.len++;
        return flug;
    }
//      删除指定的数
    public boolean delete(int x){
        int index = locate(x);
        for (int i = index; i<this.len - 1; i++){
            this.data[i] = this.data[i+1];
        }
        if (this.len == this.data.length){
            this.data = Arrays.copyOf(this.data,this.data.length-1);
        }
        return true;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值