데이터 구조 - 선형 표 (List) 1

5468 단어 데이터 구조
선형 표 (list): 0 개 또는 여러 요소 (같은 데이터 형식) 의 유한 서열 (선후 순서 가 있 음).선형 표 의 기본 동작:
선형 표 의 기본 동작:
Operation:
반환 값:
InitList(*L)
빈 선형 표를 만 듭 니 다.
ListEmpty(L)
비어 있 으 면 true 로 돌아 갑 니 다. 그렇지 않 으 면 false 로 돌아 갑 니 다.
ClearList(*L)
목록 비우 기
GetElem(L,i,*e)
i 번 째 요소 값 을 e 에 게 되 돌려 줍 니 다. 0 으로 되 돌아 가 는 데 성공 하 였 습 니 다.
LocateElem(L,e)
e 가 있 으 면 번호 로 돌아 갑 니 다. 그렇지 않 으 면 0 으로 돌아 갑 니 다.
ListInsert(*L,i,e)
요소 삽입 e
ListDelete(*L,i,*e)
i 번 째 요 소 를 삭제 하고 값 e 를 되 돌려 줍 니 다.
ListLength(L)
선형 표 요소 갯 수 되 돌리 기
1. 선형 표 의 순서 저장 구조: 주소 연속 저장 장치 로 선형 표 의 데이터 요 소 를 순서대로 저장 합 니 다.(C 언어의 type: def: ypedef 는 type: define 의 줄 임 말로 볼 수 있 습 니 다. 말 그대로 형식 정의 입 니 다. 즉, 기 존 형식 에 사용 하기 편리 한 별명 을 다시 정 의 했 을 뿐 새로운 데이터 형식 이 생 성 되 지 않 았 습 니 다. type: def 의 사용 은 매크로 정의 define 와 비슷 하지만 다음 과 같 습 니 다. 1. \ # define 과 달리 type: def 가 내 놓 은 기호 입 니 다.이름 은 값 대신 형식 에 만 제 한 됩 니 다. 2. type: def 의 설명 은 프로세서 가 아 닌 컴 파일 러 에 의 해 실 행 됩 니 다. 3. type: def 는 \ # define 보다 더 유연 합 니 다.)(구조 체 구성원 변수의 방문, - > 앞 에 놓 인 것 은 지침 이 고 앞 에 놓 인 것 은 구조 체 변수 입 니 다. 예 를 들 어 하나의 구조 체 struct student 이 정의 되 었 을 때 안에 int a 가 있 습 니 다. 그 다음 에 구조 체 변수 struct student student 및 구조 체 변수 포인터 struct student * p 가 있 고 p = & stu 가 있 으 면 p - > a (등가 (* p). a) 와 stu. a 는 같은 뜻 을 표시 합 니 다.)
#include
/*     */
#define MAXSIZE 20
typedef int ElemType;
typedef struct{
    ElemType data[MAXSIZE];
    int length;
}SqList;
/***********/
/*  */
int GetElem(SqList L,int i,ElemType *e)
{
    if(L.length==0||i<1||i>L.length)
        return 0;
    *e=L.data[i-1];
    return 1;
}
/******/
/*  */
int ListInsert(SqList *L,int i,ElemType e)
{
    int k;
    if(L->length==MAXSIZE)
        return 0;
    if(i<1||i>L->length+1)
        return 0;
    if(i<=L->length)
    {
        for(k=L->length;k>=i;k--)
            L->data[k]=L->data[k-1];
    }
    L->data[i-1]=e;
    L->length++;
    return 1;
}
/******/
/*    */
int ListDelete(SqList *L,int i,ElemType *e)
{
    int k;
    if(L->length==0)
        return 0;
    if(i<1||i>L->length)
        return 0;
    *e=L->data[i-1];
    if(ilength)
    {
        for(k=i;klength;k++)
            L->data[k-1]=L->data[k];
    }
    L->length--;
    return 1;
}
/**********/
void main()
{
    SqList L1;
    SqList *PL1;
    ElemType e1;
    ElemType *pe;
    int p = 0;
    int j;
    pe = &p;//  ,            
    PL1=&L1;
    for(j=0;j<10;j++)
    {
        L1.data[j]=j+10;
    }
    //e=&L1.data[5];
    L1.length=10;
    GetElem(L1,5,pe);
    printf("GetElem 5 =%d
"
,*pe);//printf("%d
",p);
ListInsert(PL1,5,555); ListDelete(PL1,6,pe); printf("GetElem 5 =%d
"
,*pe); for(j=0;j"L1.data[%d]=%d
",j,L1.data[j]); } getchar(); }

좋은 웹페이지 즐겨찾기