minhas informações de contato
Correspondência[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
nós queremos conversarTabela de sequência, temos que falar primeiro sobre tabelas lineares, porque tabelas sequenciais são um tipo de tabelas lineares.
Como o nome sugere, uma tabela linear é uma tabela que organiza dados como linhas.
Isso pode ser entendido pensando na fila na realidade.
Características das tabelas lineares:
A tabela de sequência é um parágrafoEndereços físicos são consecutivosAs unidades de armazenamento são como pessoas alinhadas uma ao lado da outra.
Uma estrutura linear que armazena elementos de dados em sequência, geralmente usandovariedadearmazenar.
Conclua a adição, exclusão, verificação e modificação de dados no array.
Implemente você mesmo uma tabela de sequência (armazenamento de dados do tipo int), use a tabela de sequência como uma classe, implementamos algumas interfaces, ou seja, algumasmétodo de membroPara realizar a adição, exclusão, verificação e modificação de dados.
public class SeqList {
private int[] elem;
private int usedSize;
// 默认构造方法
SeqList(){ }
// 将顺序表的底层容量设置为initcapacity
SeqList(int initcapacity){ }
// 新增元素,默认在数组最后新增
public void add(int data) { }
// 在 pos 位置新增元素
public void add(int pos, int data) { }
// 判定是否包含某个元素
public boolean contains(int toFind) { return true; }
// 查找某个元素对应的位置
public int indexOf(int toFind) { return -1; }
// 获取 pos 位置的元素
public int get(int pos) { return -1; }
// 给 pos 位置的元素设为 value
public void set(int pos, int value) { }
//删除第一次出现的关键字key
public void remove(int toRemove) { }
// 获取顺序表长度
public int size() { return 0; }
// 清空顺序表
public void clear() { }
}
Por padrão, inicialmente abrimos 10 espaços de dados.
private static final int DEFAULT_SIZE = 10;
public SeqList() {
this.elem= new int[DEFAULT_SIZE];
}
Passe o comprimento do array e use-o para abrir espaço.
private static final int DEFAULT_SIZE = 10;
public SeqList(int initcapacity) {
this.elem= new int[initcapacity];
}
Novos elementos são adicionados no final do array por padrão.
Pontos a considerar:
public void add(int data) {
if(isFull()){
elem = Arrays.copyOf(elem,elem.length * 2);
}
elem[usedSize++] = data;
}
/**
* 判断当前的顺序表是不是满的!
*
* @return true:满 false代表空
*/
private boolean isFull() {
return usedSize == elem.length;
}
Insira o elemento no pos subscrito.
Precauções:
private boolean checkPosInAdd(int pos) throws PosIllegalException{
if(pos < 0 || pos > usedSize){
throw new PosIllegalException("位置不合法");
}
return true;
}
// 在 pos 位置新增元素
public void add(int pos, int data) {
try{
if(checkPosInAdd(pos)){
if(isFull()){
elem = Arrays.copyOf(elem,elem.length * 2);
}
for (int i = usedSize; i > pos ; i--) {
elem[i] = elem[i-1];
}
elem[pos] = data;
usedSize++;
}
}catch(PosIllegalException e){
e.printStackTrace();
}
}
Verifique se os dados fornecidos estão contidos na tabela de sequência.
Basta percorrê-lo diretamente, retornar verdadeiro se encontrar e retornar falso se não encontrar.
public boolean contains(int toFind) {
for (int i = 0; i < usedSize; i++) {
if(elem[i] == toFind){
return true;
}
}
return false;
}
Observe o índice dos dados fornecidos nesta tabela de sequência.
Basta percorrer diretamente e encontrar o subscrito de retorno sem retornar -1.
public int indexOf(int toFind) {
for (int i = 0; i < usedSize; i++) {
if(elem[i] == toFind){
return i;
}
}
return -1;
}
Produza o elemento na posição pos.
Precauções:
public int get(int pos) {
try{
if(checkPosInAdd(pos)){
return elem[pos];
}
}catch(PosIllegalException e){
e.printStackTrace();
}
return 0;
}
Modifique o elemento de posição pos.
Precauções:
public void set(int pos, int value) {
try{
if(checkPosInAdd(pos)){
elem[pos] = value;
}
}catch(PosIllegalException e){
e.printStackTrace();
}
}
Exclua a primeira ocorrência da chave.
Precauções:
public void remove(int key) {
for (int i = 0; i < usedSize; i++) {
if(elem[i] == key){
for (int j = i; j < usedSize - 1; j++) {
elem[j] = elem[j + 1];
}
usedSize--;
}
}
}
A obtenção do comprimento da tabela de sequência aqui se refere ao número de dados úteis, ou seja, usedSize.
public int size() {
return usedSize;
}
Defina o conteúdo da tabela de sequência como vazio.
Precauções:
public void clear() {
for (int i = 0; i < usedSize; i++) {
elem[i] = 0;
}
usedSize = 0;
}
A classe ArrayList é fornecida em Java para representar uma lista sequencial.
Descrição da interface:
Java fornece 3 métodos de construção conforme mostrado na tabela:
método | Introdução ao uso do método |
---|---|
Lista de Matriz() | Construção sem argumentos |
ArrayList(Coleção<? extends E> c) | Construir ArrayList usando outras coleções |
ArrayList(int capacidadeinicial) | Especifique a capacidade inicial da tabela de sequência |
Os métodos comuns fornecidos são semelhantes aos que implementamos acima.
As vantagens das tabelas de sequência são as seguintes:
Os links para os exercícios estão abaixo:
Triângulo Yang Hui