스 택 구 조 를 통 해 단일 체인 표를 역 치 합 니 다.

2095 단어 데이터 구조
창고 구 조 를 빌려 단일 체인 표를 역 치 하 다.
입 출력 샘플: 1 그룹
#1
  • 샘플 입력:
    5 //        
    1 2 3 4 5  //           
  • 샘플 출력:
    5 4 3 2 1 //     ,     
  • #include 
    #include 
    #define max 100
    typedef struct node
    {
        char data;
        struct node *next;
    } Lnode,*Linklist;
    
    typedef struct sta
    {
        char data[max];
        int top;
    } stack;
    stack* init()
    {
        stack *s=(stack*)malloc(sizeof(stack));
        s->top=-1;
        return s;
    }
    int empty(stack *s)
    {
        if(s->top==-1)
            return 1;
        else return 0;
    }
    Linklist creat(int num)//              
    {
        Lnode *s,*r;
        int x;int cout=0;
        Linklist L;
        L=(Lnode *)malloc(sizeof(Lnode));//                
        L->next=NULL;
        r=L;
        while(coutdata=x;
            s->next=NULL;
            r->next=s;
            r=s;
            cout++;
        }
        return L;
    }
    void push(stack* s,Lnode *x)//  
    {
        if(s->top==max-1) return;
        else
        {
            s->top++;
            s->data[s->top]=x->data;
        }
    }
    //void pop(stack* s,Lnode **x)
    //{
    //
    //    if(empty(s)) return;
    //    else
    //    {
    //        (*x)->data=s->data[s->top];
    //        s->top--;
    //    }
    //}
    int pop(stack* s,int *x)//  
    {
    
        if(empty(s)) return 0;
        else
        {
            *x=s->data[s->top];
            s->top--;
        }
        return *x;
    }
    
    void result(Linklist L)
    {
        Lnode *p,*l;int x;
        stack *s=init();
        p=L->next;//       
        l=L;
        L->next=NULL;
        while(p)//         
        {
            push(s,p);
            p=p->next;
        }
        while(!empty(s))
        {
            x=pop(s,&x);
    //        l->next=q;//        
    //        l=q;//  ,    
            printf("%d ",x);
        }
    //    l->next=NULL;
    //    return L;
    }
    int main()
    {
        Linklist L;
        int num;
        scanf("%d",&num);//          
        L=creat(num);
        result(L);
    //    while(L)
    //    {
    //        L=L->next;
    //        printf("%c ",L->data);
    //    }
        return 0;
    }
    

    좋은 웹페이지 즐겨찾기