선형 테이블
선형 테이블은 가장 단순하고 가장 일반적으로 사용되는 데이터 구조입니다. 이들은 N 개별 데이터 요소 (노드)로 구성된 유한 시퀀스입니다. 그 중에서도 데이터 요소의 수는 테이블의 길이입니다. n이 0이면 빈 테이블이됩니다. 비어 있지 않은 선형 테이블은 일반적으로 다음과 같이 기록됩니다.
(a1, a2,…, ai-1, ai, ai+1,…, an)
1. 선형 테이블의 순차적 저장 및 알고리즘
선형 테이블의 순차적 저장은 선형 테이블의 데이터 요소를 논리적 순서로 주소를 갖는 연속 저장 장치 세트로 저장하는 것을 나타냅니다. 이러한 방식으로 저장된 선형 테이블을 순차 테이블이라고합니다.
1. 순서 표의 구조적 정의
공개 클래스 seqlist { / * 초기 공간은 10 * / private static final int list_size = 10입니다. /* 배열 데이터는 요소*/ private int [] data를 저장하는 데 사용됩니다. /* 현재 테이블은 길고 실제 요소 수는*/ 개인 int 길이; } 2. 작동을 삽입하십시오
순차 테이블의 삽입 작업은 I-1 요소와 선형 테이블의 I-TH 요소 사이에 새로운 요소를 삽입하는 것을 나타냅니다. 서열 테이블의 인접한 요소는 물리적 구조에 인접 해 있기 때문에 물리적 저장 관계도 해당 변화를 겪어야합니다. i = n+1이 아니라면 원래 순서 테이블의 I-th 요소에서 시작하는 모든 요소는 각각 1 위치 씩 뒤로 이동해야합니다.
/** * 순서 테이블 목록 노드에 i-th 위치에 새 요소를 삽입 * @param 목록 주문 테이블 * @param i position * @param node 새 요소 */public void insertList (seqlist list, int i, int node) {if (i <1 || i> list.length + 1) {system.out.println ( "위치 오류"); 반품; } if (list.length> = list_size) {system.out.println ( "오버 플로"); 반품; } for (int j = list.length -1; j> = i -1; } /* 새 요소 삽입* / list.data [i-1] = 노드; / * 테이블 길이에 1을 추가 */ list.length ++; } 3. 작동 삭제
순차 테이블의 삭제 작업은 테이블에서 I-th 요소를 삭제하는 것을 나타냅니다. 삽입 작업과 달리 삽입은 요소를 뒤로 이동시키고 삭제 작업이 요소를 앞으로 움직입니다.
/*** 순서 테이블 목록에서 I-th 요소를 삭제하고 삭제 된 요소* @param 목록 시퀀스 테이블* @param i 요소 위치* @return node*/public int deletelist (seqlist list, int i) {int node = 0; if (i <0 || i> list.length) {system.out.println ( "위치 오류"); 리턴 노드; } node = list.data [i-1]; for (int j = i; j <list.length; j ++) { /* 요소 forward* / list.data [j-1] = list.data [j]; } list.length-; 반환 노드;} 4. 역 순서 표
먼저, 테이블 길이의 절반을 루프 컨트롤 횟수로 사용하고, 첫 번째 요소의 순서로 테이블의 마지막 요소를 교환하고, 두 번째 요소를 두 번째 요소의 순서로 교환하고, 교환이 완료 될 때까지 켜집니다.
/*** 시퀀스 테이블 반대로* @param 목록 원본 순서 테이블* @return 시퀀스 테이블*/public seqlist 변환 (seqlist list) {int node; int length = list.length/2; for (int i = 0; i <length; i ++) { /* Symmetrical Exchange 요소* / int j = list.length -1 -i; node = list.data [i]; list.data [i] = list.data [j]; list.data [j] = 노드; } 반환 목록; } 2. 선형 테이블의 체인 저장 및 알고리즘
선형 테이블을 저장하는 체인 저장 구조의 데이터 요소의 저장 공간은 연속적이거나 불연속적 일 수 있으므로 링크 된 목록의 노드에 무작위로 액세스 할 수 없습니다. 체인 스토리지는 가장 일반적인 저장소 방법 중 하나입니다.
체인 저장 구조를 사용하여 각 데이터 요소를 나타내는 경우, 요소 자체의 정보를 저장하는 것 외에도 후속 요소의 저장 위치를 나타내는 주소도 필요합니다. 이 스토리지 방법으로 표시되는 선형 테이블을 링크 된 목록이라고합니다.
5. 단일 링크 목록의 구조적 정의
공개 클래스 링크리스트 { /* 데이터 필드* / 개인 숯 데이터; /* 연속 요소*/ 개인 링크리스트 다음;} 6. 테이블 빌딩 알고리즘
헤더 삽입 방법은 빈 테이블로 시작하고 데이터를 반복적으로 읽고 새 노드를 생성하며 새 노드의 데이터 필드에 읽기 데이터를 저장 한 다음 끝날 때까지 현재 링크 된 목록의 헤더에 새 노드를 삽입합니다.
/*** 헤더 삽입별로 테이블 작성* @param chars 문자 배열* @return 단일 링크 목록*/public linklist createListf (char [] chars) {linklist node; LinkList Head = NULL; for (char ch : chars) { /* 새 노드를 신청* / node = new LinkList (); node.data = ch; /* 후속 노드의 포인트*/ node.next = head; 헤드 = 노드; } /* 헤드 노드로 돌아 가기* / 리턴 헤드;} 7. 꼬리 삽입 방법 테이블 빌딩 알고리즘
헤더 삽입 테이블의 노드 순서는 입력 할 때 순서와 반대입니다. 입력 순서가 일관되면 꼬리 삽입 방법을 사용할 수 있습니다.
/*** 테이블을 만들기위한 꼬리 삽입 방법* @param chars 문자 배열* @return 단일 링크 목록*/public linklist createlist (char [] chars) {linklist node; LinkList Head = NULL; 링크리스트 뒷면 = null; for (char ch : chars) {node = new LinkList (); node.data = ch; if (head == null) { /* 새 노드는 헤드 노드* / head = 노드입니다. } else { /* 이전 노드는 새 노드* / rear.next = 노드를 가리 킵니다. } /* 테이블의 꼬리는 새 노드를 가리 킵니다* / rear = 노드; } /* 헤드 노드로 돌아 가기* / 리턴 헤드;}위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.