데이터 구조 독서 노트 1

모든 것 은 Merge 1.
– 간단하게 기록 한 후에 각자 실현 되 고 코드 를 작성 하여 이 루어 집 니 다. 위조 코드 가 아 닙 니 다.그때 Github 링크 를 드 리 겠 습 니 다.위조 코드 가 싫어 서...
비교적 복잡 한 선형 표 에서 하나의 데이터 요 소 는 몇 개의 데이터 항목 으로 구성 할 수 있다.
1. 선형 표 의 기본 동작
  • InitList (* L) 작업 을 초기 화하 고 빈 선형 표 L
  • 을 만 듭 니 다.
  • ListEmpty (L) 선형 표 가 비어 있 으 면 true 로 돌아 갑 니 다. 그렇지 않 으 면 false
  • 로 돌아 갑 니 다.
  • ClearList (* L) 선형 테이블 비우 기
  • GetElem (L, i, * e) 은 선형 표 L 의 i 번 째 위치 요소 값 을 e
  • 에 게 되 돌려 줍 니 다.
  • LocateElem (L, e) 은 선형 표 L 에서 주어진 값 e 와 같은 요 소 를 찾 습 니 다. 찾 는 데 성공 하면 이 요 소 를 표 의 번호 로 되 돌려 줍 니 다.그렇지 않 으 면 0
  • 으로 돌아 갑 니 다.
  • ListInsert (* L, i, e) 는 선형 표 L 의 i 번 째 위치 에 새 요소 e
  • 를 삽입 합 니 다.
  • ListDelete (* L, i, * e) 는 선형 표 L 의 i 번 째 위치 요 소 를 삭제 하고 e 로 그 값 을 되 돌려 줍 니 다.

  • 2. union 조작
    생각: 집합 B 에 존재 하지만 A 에 존재 하지 않 는 데이터 요 소 를 A. 의사 코드 에 삽입 하여 실현 합 니 다.
    void union(List *La,List Lb)
    {
        int La_len,Lb_len,i;
        ElemType e;     //  La Lb       
        La_len = ListLength(La);
        Lb_len = ListLength(Lb);
        for(i=1;i<=Lb_len;i++)
        {
            GetElem(Lb,i,e);// Lb  i     e
            if(!Location(La,e,equal)) //La    e      
                ListInsert(La,++La_len,e);
        }
    }

    3. 순차 적 으로 저 장 된 구조 코드
    #define MAXSIZE 20
    typedef int *ElemType;*
    typedef struct
    {
        *ElemType* data[MAXSIZE];
        int length;
    }SqList;

    액세스 시간 성능 은 o [1] 로 무 작위 액세스 구조 라 고 합 니 다.
    4. 순차 저장 구조의 삽입 과 삭제
    초기 정의:
    #define OK 1
    #define ERROR 0
    #define TRUE 1
    #define FALSE 0
    typedef int Status;

    알고리즘 삽입 사고:
  • 삽입 위치 가 합 리 적 이지 않 으 면 이상 을 던진다
  • 선형 표 의 길이 가 배열 의 길이 보다 크 면 이상 또는 동적 증가 용량
  • 을 던진다.
  • 마지막 요소 부터 i 번 째 위치 까지 옮 겨 다 니 며 각각 한 자 리 를 뒤로 이동 시킨다
  • 원 소 를 i 에 삽입 합 니 다
  • 시계 길이 + 1
  • Status ListInsert(SqList *L,int i,ElmeType e)
    {
        int k;
        if(L->length == MAXSIZE)
            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++;
        return OK;  
    }

    삭제 알고리즘 사고방식:
  • 삭제 위치 가 불합리 하면 이상 던 지기
  • 삭제 요소 추출
  • 삭제 위치 부터 마지막 요소 의 위 치 를 옮 겨 다 니 며 각각 한 위치 로 이동 합 니 다
  • 시계 길이 - 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(i<L->length)
        {
            for(k=i;k<L->length;k++)
                L->data[k-1] = L->data[k];
        }
        L->length--;
        return OK;
    }

    선형 링크 의 장단 점 1. 액세스 편의 2. 변경 어려움

    좋은 웹페이지 즐겨찾기