선형 표 의 순서 저장 구조 (삽입 및 삭제)
5769 단어 데이터 구조
선형 표 의 순서 저장 구 조 는 주소 연속 저장 장치 로 선형 표 의 데이터 요 소 를 순서대로 저장 하 는 것 을 말한다.
2. 주소 계산 방법
선형 표 의 i 번 째 요 소 는 배열 아래 에 i - 1 로 표 시 된 위치 에 저장 하 는 것 이다.만약 에 c 개의 저장 부 를 점용 한다 고 가정 하면 선형 표 의 i + 1 개의 데이터 요소 의 저장 위치 와 i 번 째 데이터 요소 의 저장 위 치 는 다음 과 같은 관계 식 을 만족 시 킵 니 다 (LOC 는 저장 위 치 를 얻 는 함 수 를 표시 합 니 다).
LOC(ai+1) = LOC(ai) + c
즉시
LOC(ai) = LOC(ai) + (i-1)*c
3. 원소 조작 획득
4. 567917. 사고: 선형 표 의 순서 저장 구조 에 있어 GetElem 작업 을 실현 하고 선형 표 L 중의 i 번 째 위치 요소 값 을 되 돌려 줍 니 다.프로그램의 경우 i 의 수치 가 배열 아래 표 시 된 범위 내 (경 계 를 넘 지 않 음) 에 있 으 면 배열 i - 1 아래 표 시 된 값 을 되 돌려 주면 됩 니 다
코드:
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
typedef int Status;
/*Status , , OK */
/* : L ,*/
/* : e L i */
Status GetElem(SqList L, int i , ELemType *e)
{
if(L.length==0 || i <1 || i >L.length)
return ERROR;
*e = L.data[i-1]; /* i-1 */
return OK;
}
무 작위 저장 구조 이기 때문에 시간 복잡 도 는 O (1) 이다.
4. 삽입 동작
ListInsert (* L, i, e), 즉 선형 표 L 의 i 번 째 위치 에 새 요소 e 를 삽입 합 니 다.
삽입 알고리즘 의 사고방식: * 삽입 위치 가 합 리 적 이지 않 으 면 이상 을 던 집 니 다. *선형 표 의 길이 가 배열 의 길이 보다 크 면 이상 또는 동적 으로 용량 을 증가 합 니 다. *마지막 요소 부터 i 번 째 위치 로 옮 겨 다 니 며 각각 한 위 치 를 뒤로 이동 합 니 다. *위치 i 에 요 소 를 삽입 합 니 다. *시계
코드:
/* : L ,1≤i≤ListLength(L)*/
/* : L i e,L 1*/
Status ListInsert(SqList *L,int i ,ElemType e)
{
int k;
if(L->length==MAXSIZE) /* */
return ERROR;
if(i<1 || i>L->length+1) /* i */
return ERROR;
if(i<=L->length) /* */
{
for (k=L->length-1;k>=i-1;k--) /* */
L->data[k+1]=L->data[k];
}
L->data[i-1]=e; /* */
L->length++; /* 1*/
return OK;
}
5. 삭제 작업
삭제 알고리즘 사고방식: * 삭제 위치 가 합 리 적 이지 않 으 면 이상 을 던 집 니 다. *요소 삭제 하기; *요소 의 위 치 를 삭제 할 때 부터 마지막 요소 의 위 치 를 옮 겨 다 니 며 각각 한 위 치 를 앞으로 이동 합 니 다. *시계 길이 감소 1.
코드:
/* : L ,1≤i≤ListLength(L)*/
/* : L i , e ,L 1*/
Status ListDelete(SqList *L,int i,ElemType *e)
{
int k;
if(L->length==0) /* */
return ERROR;
if(i<1 || i >L->length) /* */
return ERROR;
*e = L->data[i-1];
if(ilength) /* */
{
for(k=i;klength;k++) /* */
L->data[k-1]=L->data[k];
}
L->length--; /* 1*/
return OK;
}
6. 삽입 과 삭제 의 시간 복잡 도
가장 좋 은 상황:
마지막 위치 에 삽입 하면 후자 가 마지막 위 치 를 삭제 하면 시간 복잡 도 는 O (1) 이다.
최 악의 경우:
첫 번 째 위치 에 삽입 하거나 첫 번 째 요 소 를 삭제 하면 모든 요 소 를 이동 해 야 하기 때문에 시간 복잡 도 는 O (n) 입 니 다.
평균 상황:
요소 가 i 번 째 위치 에 삽입 되 거나 i 번 째 요 소 를 삭제 하기 때문에 n - i 요 소 를 이동 해 야 합 니 다.확률 원리 에 따라 위치 마다 요 소 를 삽입 하거나 삭제 할 가능성 은 같다.최종 평균 이동 횟수 와 가장 중간 에 있 는 요소 의 이동 횟수 는 n - 1 / 2 이다.
7. 선형 표 순서 저장 구조의 장단 점
장점: * 표 의 요소 간 의 논리 적 관 계 를 표시 하기 위해 추가 저장 공간 을 추가 할 필요 가 없습니다 * 표 의 모든 위 치 를 빠르게 액세스 할 수 있 는 요소
단점: * 삽입 과 삭제 작업 은 대량의 요 소 를 이동 해 야 합 니 다. *선형 표 의 길이 변화 가 비교적 클 때 저장 공간 용량 을 확정 하기 어렵다. *저장 공간의 파편 을 만들다.
참고 자료: 정 걸 저 2011 년 6 월 제1 판
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.