顺序表(java)详解(小白专用)

Posted 可乐好哇!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了顺序表(java)详解(小白专用)相关的知识,希望对你有一定的参考价值。

文章目录

顺序表(java)详解(小白专用)

1.顺序表是什么?

  • 顺序表就是在数组上完成增删改查。
  • 顺序表分为:动态和静态顺序表。
  • 静态顺序表用于知道要用多少数据的工作场景。
  • 动态顺序表可动态分配使用空间。

2.顺序表的利弊?

  1. 利:比链表查询的速度快;
  2. 弊:添加空间比较麻烦,浪费空间现象比较严重;增删改比链表麻烦些。

3.顺序表代码实现步骤?

  • 顺序表需要哪些属性?

  • 顺序表需要实现哪些功能?

  • 代码如下:

  1. 创建SeqList类
// 创建一个SeqList类
public class SeqList 

	public int[] elem;	// 定义存储数据的数组
	public int usedSize;	// 定义使用数组空间的长度
	
	// 创建这个类的构造方法
	public SeqList() 
		this.elem = new int[5];	// 分配5个空间给数组elem
	



2.添加addNum方法 (注意:与上面在同一个类中

	// pos代表插数的位置  data代表所插得数
	 public void addNum(int pos, int data) 
	 		// 判断使用的空间是否不足
	        if (this.usedSize == this.elem.length) 
	            System.out.println("空间沾满了!");
	            return;
	        
		
			// 判断pos位置的合法性(顺序表是连续且顺序的,不能超过使用的长度,也不能不存在)
	        if (pos < 0 || pos > this.usedSize) 
	            System.out.println("pos位置不合法!");
	            return;
	        
			
			// 向数组中任意位置插数值 (每插一个值,pos往后的值往后挪动一位且使用的长度加一)
	        for (int i = this.usedSize - 1; i >= pos; i++) 
	            this.elem[i + 1] = this.elem[i];
	        
	        this.elem[pos] = data;
	        this.usedSize++;
	    

3.遍历顺序表


	//打印顺序表
    public void display() 
        for (int i = 0; i < this.usedSize; i++) 
            System.out.print(this.elem[i] + " ");
        
        System.out.println();
    

4.查询一个数是否被包含数组内,包含则返回数组下标


	//数组内是否包含,包含的话返回数组下标
    public int search(int toFind) 
        for (int i = 0; i < this.usedSize; i++) 
            if (this.elem[i] == toFind) 
                return i;
            
        
        return -1;
    

5.查询一个数是否被包含在数组内

 //数组是否包含数字,包含返回true,反之false
    public boolean contains(int toFind) 
        for (int i = 0; i < this.usedSize; i++) 
            if (this.elem[i] == toFind) 
                return true;
            
        
        return false;
    

6.获取pos位置上的元素

	// 判断使用的空间是否为空
	 public boolean isEmpty() 
	        if (this.usedSize == 0) 
	            return true;
	        
	        return false;
	    
    //获取pos的位置上的值
    public int getPos(int pos) 
        if (isEmpty()) 
            return -1;
        
        if (pos < 0 || pos >= this.usedSize) 
            return -1;
        
        return this.elem[pos];
    

7.修改pos位置上的值

	// 判断使用的空间是否为空
	public boolean isEmpty() 
	        if (this.usedSize == 0) 
	            return true;
	        
	        return false;
	    

	//修改pos位置上的值
    public void updatePos(int pos, int val) 
        if (isEmpty()) 
            return;
        
        if (pos < 0 || pos >= this.usedSize) 
            return;
        
        this.elem[pos] = val;
    

8.删除第一次出现key的数字(注意:别忘了将usedSize - -

	//删除第一次出现的数字
    public void deleteOne(int key) 
        // key的下标
        int index = search(key);

		// 删谁从谁那开始
        for (int i = index; i < this.usedSize - 1; i++) 
            this.elem[i] = this.elem[i + 1];
        
        usedSize--;
    

9.清除数组值和查询使用的长度


	//清除数据
    public void clear() 
        this.usedSize = 0;
    

    //使用的长度
    public int size() 
        return this.usedSize;
    

10.测试后结果


运行结果如下:

建议: 多测几个测试用例!!!

总结

  1. 多思考顺序表实现的过程
  2. 理解顺序表的各种功能
  3. 建议画图编码并用,以便更好理解
  4. 理解之后,多多练习,你的思维会有更好的提升

以上是关于顺序表(java)详解(小白专用)的主要内容,如果未能解决你的问题,请参考以下文章

Java中顺序表及链表详解

VPS 与专用 JVM Java 托管

数据结构顺序表(增删查改)的实现 [初阶篇_ 复习专用]

java中哈希表及其应用详解

ERP会计科目表初始化

Java小白入门200例109之Java Map集合详解