c 언어 선형 표 의 체인 표현 과 실현

/*          */
#include
#include
#include
typedef struct node{
    int data;
    struct node *next;
}Node,*pNode;
//             
pNode CreateListHead(void){
    pNode L = (pNode)malloc(sizeof(Node));
    if(!L)
        exit(-1);
    L->next = NULL;
    return L;
}
//     
void DisLinkList(pNode L)
{
    pNode p = L->next;
    while(p){
        printf("%d ",p->data);
        p = p->next;
    }
}
//      
int ListLength(pNode L){
    pNode p = L->next;
    int k = 0;
    while(p){
        p = p->next;
        k++;
    }
    return k;
}
//    
int GetElem(pNode L,int pos, int *e){
    pNode p = L->next;
    int i = 1;
    while(p && i<pos){
        p=p->next;
        ++i;
    }
    if(!p || i>pos){
        return 0;
    }
    *e = p->data;
    return 1;
}
//    
int ListInsert(pNode L,int pos, int e){
    pNode p = L;
    pNode pNew;
    int i = 1;
    while(p&& i<pos){
        p = p->next;
        ++i;
    }
    if(!p || i<pos)
        return 0;
    pNew = (pNode)malloc(sizeof(Node));
    pNew->data = e;
    pNew->next = p->next;
    p->next =pNew;
    return 1;
}
//    
int ListDelete(pNode L,int pos ,int *e){
    pNode p = L;
    pNode q;
    int i=1;
    while(p->next && i<pos)
    {
        p = p->next;
        ++i;
    }
    if(!(p->next) || i>pos)
        return 0;
    q = p->next;
    p->next = q->next;
    *e = q->data;
    free(q);
    return 1;

}
int main(void){
    pNode L;
    int e,f,g;
    int pos =7;
    L = CreateListHead();
    ListInsert(L,1,1);
    ListInsert(L,2,2);
    ListInsert(L,3,3);
    ListInsert(L,4,4);
    ListInsert(L,5,5);
    ListInsert(L,6,6);
    ListInsert(L,7,7);
    printf("     
"
); DisLinkList(L); printf("

"
); GetElem(L,3,&e); printf("%d
"
,e); printf("
"
); ListDelete(L,4,&f); printf("%d
"
,f); g=ListLength(L); printf(" %d
"
,g); return 0; }

코드 가 비교적 간단 합 니 다. 지적 을 환영 합 니 다.

좋은 웹페이지 즐겨찾기