선형 표 의 고전 구현 코드

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. 선형 표 의 체인 식 저장 구조
  정 의 는 말 하지 않 겠 습 니 다. 체인 식 저장 구조의 결점 은 데이터 필드 와 포인터 필드 를 포함 합 니 다.데이터 도 메 인 은 데 이 터 를 저장 하 는 데 사용 되 고 포인터 도 메 인 은 다음 노드 의 정 보 를 저장 하 는 데 사용 된다.이전에 쓴 적 이 있 지만 그 때 는 수준 이 좋 지 않 았 지만 다시 쓰 고 싶 지 않 았 다.전송

좋은 웹페이지 즐겨찾기