моя контактная информация
Почтамезофия@protonmail.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
мы хотим поговоритьТаблица последовательности, сначала нам нужно поговорить о линейных таблицах, потому что последовательные таблицы — это тип линейных таблиц.
Как следует из названия, линейная таблица — это таблица, в которой данные организованы как строки.
Это можно понять, подумав об очередях в реальности.
Характеристики линейных столов:
Таблица последовательности представляет собой абзацФизические адреса последовательныеЕдиницы хранения похожи на людей, выстроившихся в очередь друг за другом.
Линейная структура, в которой элементы данных хранятся последовательно, обычно с использованиеммножествохранилище.
Выполните добавление, удаление, проверку и изменение данных в массиве.
Реализуйте таблицу последовательностей самостоятельно (хранилище данных типа int), используйте таблицу последовательностей как класс, реализуем некоторые интерфейсы, то есть некоторыеметод-членОсуществлять добавление, удаление, проверку и изменение данных.
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() { }
}
По умолчанию мы изначально открываем 10 пространств данных.
private static final int DEFAULT_SIZE = 10;
public SeqList() {
this.elem= new int[DEFAULT_SIZE];
}
Передайте длину массива и используйте длину массива, чтобы освободить место.
private static final int DEFAULT_SIZE = 10;
public SeqList(int initcapacity) {
this.elem= new int[initcapacity];
}
По умолчанию новые элементы добавляются в конец массива.
Моменты, которые следует учитывать:
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;
}
Вставьте элемент в индекс pos.
Меры предосторожности:
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();
}
}
Посмотрите, включены ли данные данные в таблицу последовательности.
Просто пройдите по нему напрямую, верните true, если найдете его, и верните false, если нет.
public boolean contains(int toFind) {
for (int i = 0; i < usedSize; i++) {
if(elem[i] == toFind){
return true;
}
}
return false;
}
Посмотрите на индекс данных в этой таблице последовательности.
Просто пройдите напрямую и найдите индекс возврата, не возвращая -1.
public int indexOf(int toFind) {
for (int i = 0; i < usedSize; i++) {
if(elem[i] == toFind){
return i;
}
}
return -1;
}
Выведите элемент в позиции позиции.
Меры предосторожности:
public int get(int pos) {
try{
if(checkPosInAdd(pos)){
return elem[pos];
}
}catch(PosIllegalException e){
e.printStackTrace();
}
return 0;
}
Измените элемент позиции позиции.
Меры предосторожности:
public void set(int pos, int value) {
try{
if(checkPosInAdd(pos)){
elem[pos] = value;
}
}catch(PosIllegalException e){
e.printStackTrace();
}
}
Удалите первое вхождение ключа.
Меры предосторожности:
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--;
}
}
}
Получение длины таблицы последовательности здесь относится к количеству полезных данных, то есть UsedSize.
public int size() {
return usedSize;
}
Установите пустое содержимое таблицы последовательности.
Меры предосторожности:
public void clear() {
for (int i = 0; i < usedSize; i++) {
elem[i] = 0;
}
usedSize = 0;
}
Класс ArrayList предоставляется в Java для представления последовательного списка.
Описание интерфейса:
Java предоставляет 3 метода построения, как показано в таблице:
метод | Введение в использование метода |
---|---|
ArrayList() | Конструкция без аргументов |
ArrayList(Коллекция<? extends E> в) | Создайте ArrayList, используя другие коллекции. |
ArrayList(int initialCapacity) | Укажите начальную емкость таблицы последовательности |
Предоставленные общие методы аналогичны тем, которые мы реализовали выше.
Преимущества таблиц последовательностей заключаются в следующем:
Ссылки на упражнения ниже:
Треугольник Ян Хуэй