내 연락처 정보
우편메소피아@프로톤메일.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
우리는 얘기하고 싶어시퀀스 테이블, 순차 테이블은 선형 테이블 유형이므로 먼저 선형 테이블에 대해 이야기해야 합니다.
이름에서 알 수 있듯이 선형 테이블은 데이터를 선처럼 구성하는 테이블입니다.
현실의 대기열을 생각해보면 이해할 수 있다.
선형 테이블의 특성:
시퀀스 테이블은 단락을 사용합니다.물리적 주소가 연속적입니다.저장 장치는 마치 사람들이 나란히 줄을 서 있는 것과 같습니다.
일반적으로 다음을 사용하여 데이터 요소를 순서대로 저장하는 선형 구조입니다.정렬저장.
어레이의 데이터 추가, 삭제, 확인 및 수정을 완료합니다.
시퀀스 테이블을 직접 구현하고(storage 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;
}
pos 위치의 요소를 출력합니다.
지침:
public int get(int pos) {
try{
if(checkPosInAdd(pos)){
return elem[pos];
}
}catch(PosIllegalException e){
e.printStackTrace();
}
return 0;
}
pos 위치 요소를 수정합니다.
지침:
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(컬렉션<? extends E> 씨) | 다른 컬렉션을 사용하여 ArrayList 빌드 |
ArrayList(초기용량) | 시퀀스 테이블의 초기 용량 지정 |
제공되는 일반적인 방법은 위에서 구현한 것과 유사합니다.
시퀀스 테이블의 장점은 다음과 같습니다.
연습 링크는 다음과 같습니다.
양희삼각형