c 언어 양 방향 링크 실현

단 방향 체인 시 계 는 어느 정도 결함 이 있 는데 그 중 하 나 는 한 갈래 의 길 만 어 두 워 질 수 있 고 전진 할 수 있 을 뿐 후퇴 할 수 없 지만 양 방향 체인 시 계 는 이 문 제 를 해결 했다.
#include 
#include 

typedef struct node
{
    int data;
    struct node *next;
    struct node *prior;
}node,*linklist;

void create_list_tail(linklist *l)//     
{
    int i,j,x;
    linklist p,r;
    (*l)=(node*)malloc(sizeof(node));
    (*l)->prior=NULL;
    (*l)->next=NULL;
    printf("please input the length:");
    scanf("%d",&j);
    (*l)->data=x;
    //r=(*l);
    for(i=0;idata=x;
        p->next=(*l)->next;
        p->prior=(*l);
        (*l)->next=p;



    }

}

void create_list_head(linklist *l)//     
{
    int i,j,x;
    linklist p,r;
    (*l)=(node*)malloc(sizeof(node));
    (*l)->next=NULL;
    (*l)->next=NULL;
    printf("please input the length:");
    scanf("%d",&j);
    (*l)->data=j;
    r=(*l);
    for(i=0;idata=x;
        p->prior=r;
        r->next=p;
        r=p;

    }
    p->next=NULL;
}

void delete_list(linklist *l)//
{
    linklist p;
    int i,j;
    printf("please input:");
    scanf("%d",&j);
    p=(*l)->next;
    for(i=1;inext;
    }
    p->prior->next=p->next;
    p->next->prior=p->prior;
}

void insert_list(linklist *l)//    
{
    int i,j,x;
    linklist p,r;
    r=(node*)malloc(sizeof(node));
    p=(*l)->next;
    printf("please input:");
    scanf("%d %d",&j,&x);
    for(i=1;inext;
    }
    r->data=x;
    r->prior=p;
    r->next=p->next;
    p->next->prior=r;
    p->next=r;


}

void print_list(linklist *l)
{
    linklist p;
    p=(*l)->next;

    while(p)
    {
        printf("%d
",p->data); p=p->next; } } int main() { linklist a; //create_list_tail(&a); create_list_head(&a); //delete_list(&a); insert_list(&a); print_list(&a); return 0; }

기타 기능 은 상기 코드 수정 에 따라 실현 할 수 있 으 며, 단 방향 링크 와 의 조작 차이 가 많 지 않다.

좋은 웹페이지 즐겨찾기