선형 표 의 고전 구현 코드
21680 단어 데이터 구조
1. 선형 표 의 순서 저장 구조
순서 저장 구 조 는 연속 적 인 저장 장치 로 선형 으로 표 시 된 데이터 요 소 를 순서대로 저장 하 는 것 이다.장단 점 은 모두 가 알 아야 한다. 다음은 주요 기능 을 실현 하 는 데이터 구조의 고전 코드 이다.
/**
*
* */
#include
#define MAX_SIZE 20
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
typedef int Status;
typedef int ElemType;//Elem , int
typedef struct {
ElemType data[MAX_SIZE];
int length;
} SqList, *SqListPtr;
/**
*
* */
Status initSqList(SqListPtr L) {
L->length = 0;
return OK;
}
/**
*
* */
Status ListSqListEmpty(SqList L) {
if(L.length == 0) {
return TRUE;
} else {
return FALSE;
}
}
/**
* L
* */
Status ClearSqList(SqListPtr L) {
L->length = 0;
return OK;
}
/**
* L
* */
int SqListLength(SqList L) {
return L.length;
}
/**
*
* O(1) e
* */
Status GetElem(SqList L, int i, ElemType *e) {
if(L.length == 0 || i < 1 || i > L.length) {
return ERROR;
}
*e = L.data[i-1];
return OK;
}
/**
* L e , , 0
* */
int LocateElem(SqList L, ElemType e) {
for(int i = 0; i < L.length; i++) {
if(L.data[i] == e) {// int
return i+1;
}
}
return 0;
}
/**
* ,
* L i e,L 1
* */
Status SqListInsert(SqListPtr L, int i, ElemType e) {
if(L->length == MAX_SIZE || i < 1 || i > L->length+1) {
return ERROR;
}
if(i <= L->length) {// ,
for(int k = L->length-1; k >= i-1; k--) {
L->data[k+1] = L->data[k+1];
}
}
L->data[i-1] = e;
L->length ++;
return OK;
}
/**
* L i , e ,L 1
* */
Status SqListDelete(SqListPtr L, int i, ElemType* e) {
if(L->length == 0 || i < 1 || i > L->length) {
return ERROR;
}
*e = L->data[i-1];
if(i < L->length) {// ,
for(int k = i; k < L->length; k++) {
L->data[k-1] = L->data[k];
}
}
L->length--;// , ,
return OK;
}
/**
*
* */
void UnionSqList(SqListPtr La, SqList Lb) {
int la_len = SqListLength(*La);
int lb_len = SqListLength(Lb);
ElemType e;
for(int i = 0; i < lb_len; i++) {
GetElem(Lb, i+1, &e);
if(!LocateElem(*La, e)) {
SqListInsert(La, ++la_len, e);
}
}
}
int main(int argc, char const **argv) {
SqList La, Lb;
ElemType e;
for(int i = 0; i < 10; i++) {
SqListInsert(&La, i+1, i+1);
SqListInsert(&Lb, i+1, i+11);
}
UnionSqList(&La, Lb);
SqListDelete(&La, 20, &e);
printf("%d
", e);
int la_len = SqListLength(La);
for(int i = 0; i < la_len; i++) {
GetElem(La, i+1, &e);
printf("%d ", e);
}
return 0;
}
2. 선형 표 의 체인 식 저장 구조
정 의 는 말 하지 않 겠 습 니 다. 체인 식 저장 구조의 결점 은 데이터 필드 와 포인터 필드 를 포함 합 니 다.데이터 도 메 인 은 데 이 터 를 저장 하 는 데 사용 되 고 포인터 도 메 인 은 다음 노드 의 정 보 를 저장 하 는 데 사용 된다.이전에 쓴 적 이 있 지만 그 때 는 수준 이 좋 지 않 았 지만 다시 쓰 고 싶 지 않 았 다.전송
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.