15 - 양방향 체인 테이블 사용법사례 코드
양방향 체인 테이블  
코드 1:
  #include 
#include 
typedef int data_t;
typedef struct node{
    data_t data;
    struct node * front;
    struct node * next;
}duolist_t;
//  
duolist_t* create_duolist()
{
    duolist_t* list=malloc(sizeof(duolist_t));
    list->front=NULL; //          
    list->next=malloc(sizeof(duolist_t));//          
    list->next->front=list;//          
    list->next->next=NULL;//          
    return list;
}
//  
int isempty(duolist_t* list)
{
    if(list==NULL)
        return 0;
    return list->next->next==NULL;
}
// 
int insert_duolist(duolist_t* list,data_t data)
{
    if(list==NULL)
        return -1;
    duolist_t* newnode=malloc(sizeof(duolist_t));
    newnode->data=data;
    newnode->front=list;
    newnode->next=list->next;
    newnode->front->next=newnode;
    newnode->next->front=newnode;
    return 0;
}
// 
int delete_duolist(duolist_t* list)
{
    if(list==NULL||isempty(list))
        return -1;
    duolist_t* temp=list->next;
    temp->front->next=temp->next;
    temp->next->front=temp->front;
    free(temp);
    return 0;
}
//          ?
duolist_t* locate_duolist(duolist_t* list,data_t data)
{
    if(list==NULL||isempty(list))
        return NULL;
    while(list->next->next!=NULL)
    {
        if(list->next->data==data)
            return list->next;
        list=list->next;
    }
    return NULL;
}
// 
int change_duolist(duolist_t* list,data_t data)
{
    if(list==NULL)
        return -1;
    list->data=data;
    return 0;
}
//  
int print_duolist(duolist_t* list)
{
    if(list==NULL||isempty(list))
        return -1;
    while(list->next->next!=NULL)
    {
        printf("%3d ",list->next->data);
        list=list->next;
    }
    printf("
");
    return 0;
}
//   
int reprint_duolist(duolist_t* list)
{
    if(list==NULL||isempty(list))
        return -1;
    while(list->next->next!=NULL)
    {
        list=list->next;
    }
    list=list->next;
    while(list->front->front!=NULL)
    {
        printf("%3d ",list->front->data);
        list=list->front;
    }
    printf("
");
    return 0;
}
//  
int length_duolist(duolist_t* list)
{
    if(list==NULL||isempty(list))
        return 0;
    int sum=0;
    while(list->next->next!=NULL)
    {
        sum++;
        list=list->next;
    }
    return sum;
}
//  
int clear_duolist(duolist_t* list)
{
    if(list==NULL||isempty(list))
        return -1;
    while(list->next->next!=NULL)//length_duolist(list)
    {
        delete_duolist(list);
    }
    return 0;
}
//  
int destroy_duolist(duolist_t* list)
{
    if(list==NULL)
        return -1;
    if(!isempty(list))
        clear_duolist(list);
    free(list->next);
    free(list);
    return 0;
}
int main(int argc, const char *argv[])
{
    duolist_t* list=create_duolist();
    int i;
    for(i=1;i<=15;i++)
    {
        insert_duolist(list,i*2);
        print_duolist(list);
    }
    change_duolist(locate_duolist(list,20),250);
    print_duolist(list);
    insert_duolist(locate_duolist(list,250)->front,20);
    print_duolist(list);
    delete_duolist(locate_duolist(list,250)->front);
    print_duolist(list);
    reprint_duolist(list);
    printf("length_duolist:%d
",length_duolist(list));
    clear_duolist(list);
    printf("length_duolist:%d
",length_duolist(list));
    destroy_duolist(list);
    list=NULL;
    return 0;
}
  
                
                    
        
    
    
    
    
    
                
                
                
                
                
                
                    
                        
                            
                            
                                
                                    
                                    이 내용에 흥미가 있습니까?
                                
                            
                            
                            
                            현재 기사가 여러분의 문제를 해결하지 못하는 경우  AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
                            
                                
                                다양한 언어의 JSON
                            
                            JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
                            
                            
                            
                            
                            텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                            
                            CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
                            
                        
                    
                
                
                
            
#include 
#include 
typedef int data_t;
typedef struct node{
    data_t data;
    struct node * front;
    struct node * next;
}duolist_t;
//  
duolist_t* create_duolist()
{
    duolist_t* list=malloc(sizeof(duolist_t));
    list->front=NULL; //          
    list->next=malloc(sizeof(duolist_t));//          
    list->next->front=list;//          
    list->next->next=NULL;//          
    return list;
}
//  
int isempty(duolist_t* list)
{
    if(list==NULL)
        return 0;
    return list->next->next==NULL;
}
// 
int insert_duolist(duolist_t* list,data_t data)
{
    if(list==NULL)
        return -1;
    duolist_t* newnode=malloc(sizeof(duolist_t));
    newnode->data=data;
    newnode->front=list;
    newnode->next=list->next;
    newnode->front->next=newnode;
    newnode->next->front=newnode;
    return 0;
}
// 
int delete_duolist(duolist_t* list)
{
    if(list==NULL||isempty(list))
        return -1;
    duolist_t* temp=list->next;
    temp->front->next=temp->next;
    temp->next->front=temp->front;
    free(temp);
    return 0;
}
//          ?
duolist_t* locate_duolist(duolist_t* list,data_t data)
{
    if(list==NULL||isempty(list))
        return NULL;
    while(list->next->next!=NULL)
    {
        if(list->next->data==data)
            return list->next;
        list=list->next;
    }
    return NULL;
}
// 
int change_duolist(duolist_t* list,data_t data)
{
    if(list==NULL)
        return -1;
    list->data=data;
    return 0;
}
//  
int print_duolist(duolist_t* list)
{
    if(list==NULL||isempty(list))
        return -1;
    while(list->next->next!=NULL)
    {
        printf("%3d ",list->next->data);
        list=list->next;
    }
    printf("
");
    return 0;
}
//   
int reprint_duolist(duolist_t* list)
{
    if(list==NULL||isempty(list))
        return -1;
    while(list->next->next!=NULL)
    {
        list=list->next;
    }
    list=list->next;
    while(list->front->front!=NULL)
    {
        printf("%3d ",list->front->data);
        list=list->front;
    }
    printf("
");
    return 0;
}
//  
int length_duolist(duolist_t* list)
{
    if(list==NULL||isempty(list))
        return 0;
    int sum=0;
    while(list->next->next!=NULL)
    {
        sum++;
        list=list->next;
    }
    return sum;
}
//  
int clear_duolist(duolist_t* list)
{
    if(list==NULL||isempty(list))
        return -1;
    while(list->next->next!=NULL)//length_duolist(list)
    {
        delete_duolist(list);
    }
    return 0;
}
//  
int destroy_duolist(duolist_t* list)
{
    if(list==NULL)
        return -1;
    if(!isempty(list))
        clear_duolist(list);
    free(list->next);
    free(list);
    return 0;
}
int main(int argc, const char *argv[])
{
    duolist_t* list=create_duolist();
    int i;
    for(i=1;i<=15;i++)
    {
        insert_duolist(list,i*2);
        print_duolist(list);
    }
    change_duolist(locate_duolist(list,20),250);
    print_duolist(list);
    insert_duolist(locate_duolist(list,250)->front,20);
    print_duolist(list);
    delete_duolist(locate_duolist(list,250)->front);
    print_duolist(list);
    reprint_duolist(list);
    printf("length_duolist:%d
",length_duolist(list));
    clear_duolist(list);
    printf("length_duolist:%d
",length_duolist(list));
    destroy_duolist(list);
    list=NULL;
    return 0;
}
  이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.