数据结构:今日主角就是你初章——顺序表JAVA

news/2024/5/20 7:13:18 标签: 数据结构, 顺序表, 线性表, Java, sequencelist

我是小咲,数据结构是一门负责而又神秘的学科,为什么这么说呢,因为不告诉你?

神秘不神秘啊?

主要原因是讨论的主题不是数据结构啦,而是 顺序表

说到顺序表,顾名思义不是链表,而是一个个紧挨着的相邻房间的存储方式,下面就来看看代码的实际编写啦

写的代码功能不多  就是头插尾插一类的而已

特别的:ensureCapacity(确保空间大小)

 

 


package sequencelist;

import java.util.Arrays;

public class Sequencelist {
	//属性
	private int[] array;//用来保存数据
	private int size;
public Sequencelist() {
array=new int[11];
size=0;//实际元素个数
}
public void pushFront(int element) {
	ensureCapcity();
	for(int i=size-1;i>=0;i--) {
		array[i+1]=array[i];
	}
	array[0]=element;
	size++;
}
public void pushBack(int element) {
	array[size++]=element;
}
public void insert(int index,int element) {
	//size-1为最后实际数字的下标
	for(int i=size-1;i>=index;i--) {
		array[i+1]=array[i];
	}
	array[index]=element;
	size++;
}
public void popFront() {
	for(int i=0;i<size-1;i++) {
		array[i]=array[i+1];
	}
	size--;
}
public void popBack() {
	array[--size]=0;
}
public int[] getArray() {
	return array;
}
public void setArray(int[] array) {
	this.array = array;
}
public int getSize() {
	return size;
}
public void setSize(int size) {
	this.size = size;
}
public void erase(int index) {
	//中间删除
	for(int i=index;i<size;i++) {
		array[i]=array[i+1];
	}
	size--;
}
public int indexOf(int element) {
	for(int i=0;i<size;i++) {
		if(array[i]==element)
			return i;
	}
		return -1;
}
public int get(int index) {
	return array[index];
};
public void set(int index,int element) {
	array[index]=element;
}
public String toString() {
	return Arrays.toString(Arrays.copyOf(array,size));
	//original the array to be copiednewLength the length of the copy to be returned
	//a copy of the original array
}
private void ensureCapcity() {
	if(size<array.length) {
		//不需要扩容
		return;
	}
	//申请新房子
	int newCapacity=array.length+array.length/2;
	int[] newArray=new int[newCapacity];
	//搬家
	for(int i=0;i<size;i++) {
		newArray[i]=array[i];
	}
	//发朋友圈
	this.array=newArray;
}
public void remove(int element) {
int index=indexOf(element);
if(index!=-1) {
	erase(index);
}
}
//o(n^2)
public void removeAll(int element) {
	int index;
	while((index=indexOf(element))!=-1) {
		erase(index);
	}
}
//o(n)

public void removeAll2(int element) {
	int[] newArray=new int[size];
	int j=0;
	for(int i=0;i<size;i++)
	{
		if(array[i]!=element) {
			newArray[j++]=array[i];
		}
	}
	for(int i=0;i<j;i++) {
		array[i]=newArray[i];
	}
	size=j;
}
public void removeAll3(int element) {
int j=0;
for(int i=0;i<size;i++) {
	if(array[i]!=element) {
		array[j++]=array[i];
	}
}
size=j;
}
public static void main(String[] args) {
	Sequencelist seqList=new Sequencelist();
	System.out.println(seqList.toString());
	seqList.pushBack(1);
	seqList.pushBack(2);
	seqList.pushBack(3);
	System.out.println(seqList.toString());
	seqList.pushFront(10);
	seqList.pushFront(20);
	seqList.pushFront(30);
	int ret=seqList.indexOf(100);
	System.out.println(ret);
	System.out.println(seqList.toString());
	seqList.insert(2, 100);
	seqList.insert(4, 200);
	System.out.println(seqList.toString());
	seqList.erase(10);
	System.out.println(seqList.toString());
	seqList.popFront();
	System.out.println(seqList.toString());
	seqList.popBack();
	System.out.println(seqList.toString());
	seqList.set(1, 60000);
	int getNumber=seqList.get(0);
	System.out.println(getNumber);
	seqList.removeAll3(1);
	System.out.println(seqList.toString());
}
}

 


http://www.niftyadmin.cn/n/1769564.html

相关文章

操作符の学习心得

hello everyone&#xff0c;我是小咲&#xff0c;自然不是动漫里的那个小野寺小咲&#xff0c;言归正传&#xff0c;来谈谈c语言中操作符 操作符分为算术操作符、移位操作符、位操作符、赋值操作符、单目操作符、关系操作符、逻辑操作符、条件操作符、逗号表达式、下标引用、函…

惊!c语言上机编程题目?

我是小咲&#xff0c;不知道各位是否大一的时候初学c语言对于编程题目会深恶痛绝&#xff1f; 现在来拯救你了&#xff0c;尝试看懂下面我写的代码……应该不会有太多mistake吧&#xff0c;至少编译通过了呢 没有对自己要求这么低好吗&#xff1f;言归正传&#xff0c;这些就…

两个链表第一个公共结点——睡一觉再说吧?!

输入两个链表&#xff0c;找出它们的第一个公共结点。 看到这个问题的正确方式是关机&#xff0c;睡觉 现实状况就是第二天考虑的这个问题啦&#xff0c;两个链表找出第一个公共结点&#xff0c;听起来很玄&#xff0c;实际上就是从后往前找&#xff0c;直到找到两个前驱不完全…

链表 回文结构

对于一个链表&#xff0c;请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法&#xff0c;判断其是否为回文结构。 给定一个链表的头指针A&#xff0c;请返回一个bool值&#xff0c;代表其是否为回文结构。保证链表长度小于等于900。 import java.util.*;/* public clas…

实验5-缺页中断次数统计

下载内核源码 当前我的内核版本是5.8.0&#xff0c;所以我下载了差不多的5.8.1。 解压 tar -xvf linux-5.8.1.tar.xz移动解压后的源码到对应目录下&#xff0c;位置如图所示 xsxs-virtual-machine:~/下载$ sudo mv linux-5.8.1 /usr/src在/usr/src/linux-5.8.1/arch/x86/mm/fa…

反转链表Java数据结构

输入一个链表&#xff0c;反转链表后&#xff0c;输出新链表的表头 /* public class ListNode {int val;ListNode next null;ListNode(int val) {this.val val;} }*/ public class Solution {public ListNode ReverseList(ListNode head) {if(headnull)return null;ListNode …

antd的labelCol

antd的labelCol 官网定义如下&#xff1a; 修改labelCol中span的值&#xff0c;可以变更label块的大小。 <Form labelAlign"left" labelCol{{span:getLocale() zh-CN?2:3}} >当labelCol为2&#xff0c;效果如下&#xff1a; 当labelCol为3&#xff0c;效…

Java 开发入门+数据类型(review)

初始Java &#xff08;同学&#xff09; https://blog.csdn.net/H_Q_Li/article/details/90112266 操作符 https://blog.csdn.net/weixin_43914278/article/details/90646862 下面的图是总结的比较重要的知识点&#xff08;详情请回顾往期&#xff09; 不…