데이터 구조 학습 의 길 - 제1장: 서론

【 성명: 판권 소유, 전재 출처 표시, 상업 용도 로 사용 하지 마 십시오. 연락처:[email protected]
많은 전문 교재 처럼 서론 이 빠 질 수 없 는 것 은 물론 이 책 도 예 외 는 아니다.
서론 에 서 는 우리 가 책 전체 에서 배 울 내용, 즉 데이터 구조 라 는 책 이 찾 는 몇 가지 중점 을 요약 했다. 집합, 선형 표, 나무, 숲, 그림 이다.
많은 이론 적 인 것, 책 은 이미 매우 상세 하 게 해석 되 었 으 니, 나 는 여기 서 더 이상 쓸데없는 말 을 할 필요 가 없다.
나 는 단지 나의 견해 만 을 말 할 뿐이다.
우선 프로그램 을 쓰 는 사람 이 라면 '프로그램 = 데이터 구조 + 알고리즘' 이라는 식 을 알 아야 한다. 데이터 구조의 중요성 은 두말 할 필요 도 없다.
만약 에 ACM 을 하 는 친구 가 있다 면 각종 데이터 구조 가 낯 설 지 않 을 것 이다. 데이터 구 조 는 알고리즘 경기 의 큰 핵심 이 고 각종 데이터 구조 에 학대 당 한 적 이 없 으 며 진정 으로 ACM 을 해 본 사람 이 아니다.
저 는 사실 쓰레기 일 뿐 입 니 다. 다 니 는 학 교 는 2 류 중의 2 류 에 속 하기 때문에 선생님 들 의 수준 도 유한 합 니 다. 데이터 구조 라 는 과목 은 깊이 있 게 강의 하지 않 았 고 자신 도 그 당시 에 철저하게 배우 지 못 했 습 니 다. ACM 을 하 는 과정 에서 데이터 구조 도 매우 부실 하기 때문에 자신의 데이터 구 조 를 향상 시 키 는 능력 을 공 고 히 복습 해 야 합 니 다.그래서 이 연재 적 인 박문 을 쓰기 시작 했다.
중점 에 들 어가 면 먼저 서론 에서 몸 을 풀 어 주세요. 그것 이 바로 3 원 조 의 설립 입 니 다.
이것 은 가장 간단 한 집합 이 라 고 할 수 있 습 니 다. 그러면 우 리 는 책의 절차 에 따라 진행 합 시다.
첫 번 째 단계: 3 원 그룹의 생 성
집합 이란 일반적으로 배열 형식 으로 저장 되 기 때문에 우 리 는 하나의 배열 을 정의 할 수 있 기 때문에 우 리 는 처음에 몇 가지 유형 을 정의 했다.
typedef int* Triplet;//    ,         ,             
typedef int ElemType;//        
typedef int Status;//     

STEP 2: 삼원 조 의 조작
Status InitTriplet(Triplet *T,ElemType v1,ElemType v2,ElemType v3)
{
    //    :     (v1,v2,v3)
    *T = (ElemType*)malloc(3*sizeof(ElemType));//  3        
    if(!(*T)) exit(OVERFLOW);//        
    (*T)[0] = v1;
    (*T)[1] = v2;
    (*T)[2] = v3;
    return OK;
}

Status DestoryTriplet(Triplet *T)
{
    //    :      
    free(*T);
    *T = NULL;
    return OK;
}

Status Get(Triplet T,int i,ElemType *e)
{
    //    :   T    ,1<=i<=3
    //    : e  T  i   
    if(i<1||i>3) return ERROR;
    (*e) = T[i-1];
    return OK;
}

Status Put(Triplet T,int i ,ElemType e)
{
    //    :   T    ,1<=i<=3
    //    :  T  i   e
    if(i<1||i>3) return ERROR;
    T[i-1] = e;
    return OK;
}

Status IsAscending(Triplet T)
{
    //    :   T   
    //    :  T          ,   1,    0
    return (T[0]<=T[1])&&(T[1]<=T[2]);
}

Status IsDescending(Triplet T)
{
    //    :   T   
    //    :  T          ,   1,    0
    return (T[0]>=T[1])&&(T[1]>=T[2]);
}

Status Max(Triplet T,ElemType *e)
{
    //    :   T   
    //    : e  T 3        
    (*e) = T[0]>T[1]?T[0]:T[1];
    (*e) = (*e)>T[2]?(*e):T[2];
    return OK;
}

Status Min(Triplet T,ElemType *e)
{
    //    :   T   
    //    : e  T 3        
    (*e) = T[0]

세 번 째 단계: 전체 코드 구현
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;

#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1


typedef int* Triplet;//    ,         ,             
typedef int ElemType;//        
typedef int Status;//     

Status InitTriplet(Triplet *T,ElemType v1,ElemType v2,ElemType v3)
{
    //    :     (v1,v2,v3)
    *T = (ElemType*)malloc(3*sizeof(ElemType));//  3        
    if(!(*T)) exit(OVERFLOW);//        
    (*T)[0] = v1;
    (*T)[1] = v2;
    (*T)[2] = v3;
    return OK;
}

Status DestoryTriplet(Triplet *T)
{
    //    :      
    free(*T);
    *T = NULL;
    return OK;
}

Status Get(Triplet T,int i,ElemType *e)
{
    //    :   T    ,1<=i<=3
    //    : e  T  i   
    if(i<1||i>3) return ERROR;
    (*e) = T[i-1];
    return OK;
}

Status Put(Triplet T,int i ,ElemType e)
{
    //    :   T    ,1<=i<=3
    //    :  T  i   e
    if(i<1||i>3) return ERROR;
    T[i-1] = e;
    return OK;
}

Status IsAscending(Triplet T)
{
    //    :   T   
    //    :  T          ,   1,    0
    return (T[0]<=T[1])&&(T[1]<=T[2]);
}

Status IsDescending(Triplet T)
{
    //    :   T   
    //    :  T          ,   1,    0
    return (T[0]>=T[1])&&(T[1]>=T[2]);
}

Status Max(Triplet T,ElemType *e)
{
    //    :   T   
    //    : e  T 3        
    (*e) = T[0]>T[1]?T[0]:T[1];
    (*e) = (*e)>T[2]?(*e):T[2];
    return OK;
}

Status Min(Triplet T,ElemType *e)
{
    //    :   T   
    //    : e  T 3        
    (*e) = T[0]

전체적으로 서론 은 할 말 이 없습니다. 관건 은 데이터 구 조 를 익히 는 것 입 니 다. 자, 이번 에는 여기까지 하 겠 습 니 다.

좋은 웹페이지 즐겨찾기