数据结构_顺序表

实现顺序表的增 删 改 查 插入 修改

package com.Test.Demo.数据结构;

import java.util.Scanner;

/**
 * @Author Fu XvZhuang
 * @Date 2020/9/13 11:32
 * @Version 1.0
 */
public class 顺序表 {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        My_list my_list = new My_list();
        my_list.addNode(3);
        my_list.addNode(2);
        my_list.addNode(1);
        my_list.addNode(4);
        my_list.print_list();
        System.out.println(my_list.delNode(4));
        my_list.print_list();
        my_list.node_list(0,1);
        my_list.print_list();
        System.out.println(my_list.select_list01(1));
        System.out.println(my_list.select_list02(1));
        my_list.ind_list(1,99);
        my_list.print_list();
    }
}
class My_list{ //顺序表 实现增删改查
    static final int MAX_SIZE = 100; //定义常量 顺序表最大容量100
    Object[] list = new Object[MAX_SIZE];
    int len = 0;

    public My_list() {
    }
    /*public Object[] my_sort(My_list m){//阉割版归并排序 合并两个有序顺序表
        Object[] temp = new Object[MAX_SIZE];
        int i = 0;
        int j = 0;
        int k = 0;
        while(i<this.len&&j<m.len){
            if(list[i]<=m.list[j]){
                temp[k++] = list[i++];
            }else {
                temp[k++] = m.list[j++];
            }
        }
        while(i<this.len){
            temp[k++] = list[i++];
        }
        while(j<m.len){
            temp[k++] = m.list[j++];
        }
        for(i = 0;i<k;i++){
            this.list[i] = temp[i];
        }
    }*/
    public void ind_list(int i,Object o){ //将o插入到i位置
        if(this.len==this.MAX_SIZE){
            System.out.println("线性表已满,插入失败");
        }else if(i<0||i>=this.len){
            System.out.println("插入位置错误");
        }else{
            for(int index=this.len;index>i;index--){
                list[index] = list[index-1];
            }
            list[i] = o;
            this.len++;
        }
    }
    public void addNode(Object  o){ //增加元素至线性表末尾
        if(this.len==this.MAX_SIZE){
            System.out.println("线性表已满,添加元素失败");
            return;
        }
        list[this.len++] = o;
    }
    public Object delNode(int i){ //在线性表中删除第i个元素 并且返回此元素
        Object ans;
        if(i<=0||i>this.MAX_SIZE){
            System.out.println("删除元素不存在");
            ans = null;
        }else{
            ans = list[i-1];
            for(int index = i-1;index<this.len-1;index++){
                list[index] = list[index+1];
            }
            this.len--;
        }
        return ans;
    }
    public void node_list(Object o,int i){ //修改线性表第i个元素为o
        if(i<=0||i>this.MAX_SIZE){
            System.out.println("元素不存在");
        }else{
            list[i-1] = o;
        }
    }
    public Object select_list01(int i){ //在线性表中按照序号查找内容
        if(i<0||i>=this.MAX_SIZE){
            System.out.println("元素不存在");
            return null;
        }else{
            return list[i];
        }
    }
    public int select_list02(Object o){ //在线性表中查找o 并返回下标
        int ans = -1;
        for(int i=0;i<this.len;i++){
            if(list[i].equals(o)){
                ans = i;
                break;
            }
        }
        return ans;
    }
    public  void print_list(){
        for(int i=0;i<this.len;i++){
            System.out.print(this.list[i]+" ");
        }
        System.out.println();
    }
}
posted @ 2020-09-18 18:50  键盘_书生  阅读(20)  评论(0编辑  收藏  举报