데이터 구조 - 체인 식 저장 구조 - 단 방향 링크

체인 식 저장 구조 - 단 방향 링크
//linkedlist.c
#include 
#include 

//  
typedef struct node{
    int data;  //    
    struct node *next; //         
    //    linklist_t* next;//               

}linklist_t;

//  
linklist_t* create_linklist()
{
    linklist_t* list=malloc(sizeof(linklist_t));

    list->next=NULL;//         NULL

    return list;
}
//  
int isnull_linklist(linklist_t* list)
{
    if(list==NULL)
        return 0;

    return list->next==NULL;
}
//  
int insert_linklist(linklist_t* list,int data)
{
    //1
    if(list==NULL)
        return -1;

    //2
    linklist_t* newnode=create_linklist();
    newnode->data=data;

    //3
    newnode->next=list->next;

    //4
    list->next=newnode;
    
    return 0;
}
//  
int delete_linklist(linklist_t* list)
{
    //1
    if(list==NULL||isnull_linklist(list))
        return -1;

    //2
    linklist_t* temp=list->next;

    //3
    //list->next=list->next->next;
    list->next=temp->next;

    free(temp);

    return 0;
}

//  
//1.                  
//2.                           
//        ,  ,     。
linklist_t* locate_linklist(linklist_t* list,int data)
{
    //1
    if(list==NULL||isnull_linklist(list))
        return NULL;

    //2   
    while(list->next!=NULL)
    {
        if(list->next->data==data)
            return list;

        list=list->next;
    }
    
    return NULL;
}
//  
int change_linklist(linklist_t* list,int data)
{
    if(list==NULL||isnull_linklist(list))
        return -1;

    list->next->data=data;

    return 0;
}
//  
int print_linklist(linklist_t* list)
{
    //1
    if(list==NULL||isnull_linklist(list))
        return -1;

    //2
    while(list->next!=NULL)
    {
        printf("%3d ",list->next->data);
        list=list->next;
    }
    printf("
"); return 0; } // 1 void re_print_linlist_digui(linklist_t* list) { if(list->next==NULL) return ; // void return ; re_print_linlist_digui(list->next); printf("%3d ",list->next->data); return ;// } // int length_linklist(linklist_t* list) { //1 if(list==NULL||isnull_linklist(list)) return 0; int sum=0; //2 while(list->next!=NULL) { sum++; list=list->next; } return sum; } // int clear_list(linklist_t* list) { if(list==NULL||isnull_linklist(list)) return -1; while(!isnull_linklist(list))//while(length_linklist(list))//while(list->next!=NULL) { delete_linklist(list); } return 0; } // int destroy_linklist(linklist_t* list) { if(list==NULL) return -1; if(!isnull_linklist(list)) clear_list(list); free(list); return 0; } // 2 // // // // ? ? --》 // // // ? // // : 1.2.3.。。。。20 // 20 。19.。。。。3.2.1 // // -》1.2.3.。。20 ? int re_print_linlist_guohechaiqiao(linklist_t* list) { //1 if(list==NULL||isnull_linklist(list)) return -1; linklist_t* temp=create_linklist(); // // while(list->next!=NULL) { insert_linklist(temp,list->next->data); list=list->next; } print_linklist(temp); destroy_linklist(temp); return 0; } int main(int argc, const char *argv[]) { linklist_t* list=create_linklist();// int i; for(i=1;i<=20;i++) { insert_linklist(list,i*10); print_linklist(list); } change_linklist(locate_linklist(list,150),888); print_linklist(list); insert_linklist(locate_linklist(list,888),150); print_linklist(list); delete_linklist(locate_linklist(list,888)); print_linklist(list); re_print_linlist_digui(list); printf("
"); re_print_linlist_guohechaiqiao(list); printf("length_linklist %d
",length_linklist(list)); clear_list(list); printf("length_linklist %d
",length_linklist(list)); destroy_linklist(list); #if 0 for(i=1;i<=20;i++) { delete_linklist(list); print_linklist(list); } #endif return 0; }

좋은 웹페이지 즐겨찾기