데이터 구조 노트: 선형 표 순서 저장 구조 (C 언어)

3873 단어 데이터 구조
선형 표 의 순서 저장 구 조 는 주소 연속 저장 장치 로 선형 표 의 데이터 요 소 를 순서대로 저장 하 는 것 을 말한다.
여기 에는 C 언어의 한 배열 로 순서 저장 구 조 를 실현 한다.
·
선형 표 의 데이터 대상 집합 은 {a1, a2, a3... an} 이 고 모든 요소 의 유형 은 같 습 니 다.사실은 첫 번 째 요소 a1 을 제외 하고 모든 요 소 는 하나의 직접적인 전구 요소 만 있 고 마지막 요소 an 을 제외 하고 모든 요 소 는 하나의 후계 요소 만 있다.데이터 요소 간 의 관 계 는 일대일 관계 이다.
Operation
InitList(*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 로 값 을 되 돌려 줍 니 다.
OutputList(L);출력 선형 표 의 내용
구체 적 인 코드 는 다음 과 같다.
#include 

#define MAXSIZE 50
int i;

typedef struct//         
{
    char data[MAXSIZE];
    int length;
}List;

void InitList(List *P)//     
{
    int n;
    for(i=0;ilength;i++)//        \0
        P->data[i] = '\0';
    P->length = 0;
    printf("          :");
    scanf("%d",&n);
    getchar();//                
    printf("     :");
    for(i=0;idata[i]);
        P->length++;
    }
    printf("    !

"); } int ListEmpty(List L)// 0, 1 { if(L.length == 0)// return 0; else return 1; } void ClearList(List *P)// { for(i=0;ilength;i++) P->data[i] = '\0'; P->length=0; printf(" !

"); } char GetElem(List L,int x,char e)// x e { if(x<1 || x>L.length)// { printf(" !

"); return 0; } else { e = L.data[x-1]; return e; } } int LocateElem(List L,char e) { for(i=0;ilength == MAXSIZE)// { printf(" , !
"); return 0; } if(x<1 || x>P->length+1)// , { printf(" , !
"); return 0; } if(x <= P->length)// { for(i=P->length-1;i>=x-1;i--) P->data[i+1] = P->data[i]; P->data[x-1] = e; P->length++; printf(" !
"); return 1; } if(x == P->length+1)// { P->data[x] = e; P->length++; printf(" !

"); return 1; } } char ListDelete(List *P,int x,char e)// x , e, 0 { printf(" %d
",x); if(P->length == 0)// { printf(" , !
"); return 0; } if(x<1 || x>P->length)// { printf(" , !
"); return 0; } if(x < P->length)// { e = P->data[x-1]; for(i=x;ilength;i++) P->data[i-1] = P->data[i]; P->data[P->length-1] = '\0'; P->length--; printf(" !
"); return e; } if(x == P->length)// { e = P->data[x-1]; P->data[x-1] = '\0'; P->length--; printf(" !

"); return e; } } void OutputList(List L)// { if(L.length == 0) printf(" , !"); else { printf(" :
"); for(i=0;i

좋은 웹페이지 즐겨찾기