Bài tập Danh sách liên kết - Ngăn xếp

Thảo luận trong 'Lập trình máy tính' bắt đầu bởi white.smut, 18 Tháng chín 2013.

  1. Offline

    white.smut

    • Administrator

    • Loading: |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||] 99% Completed - Error: Disconnected. Please try again!
    Số bài viết:
    842
    Đã được thích:
    425
    Điểm thành tích:
    450
    Đề bài: Viết chương trình C khởi tạo một danh sách gồm các ký tự, thực hiện in ra màn hình các phần tử, in ra phần tử đáy và các phần tử còn lại?
    Mã:
    #include<conio.h>
    #include<stdio.h>
     
    struct Stack{
            char a;
            Stack*next;
    };
    Stack*S;
     
    void Push(char X,Stack *&S)      //Day tung phan tu vao ngan xep
    {
    Stack *P;
        P=new Stack;
        P->a=X;
        P->next=S;
        S=P;
    }
     
    void Pop(char &Y,Stack *&S)      //Day tung phan tu ra khoi ngan xep
    {
    Stack *P;
        if(S==NULL)
            printf("\nNgan xep rong!");
        else
            {
            Y=S->a;
            P=S;
            S=P->next;
            delete(P);
            }
    }
    void Tao(Stack*&S)                //Tao ngan xep
    {
    char ch,X;
        do
            {
            printf("\nGia tri: ");
            fflush(stdin);
            scanf("%c",&X);
            Push(X,S);
            printf("\nDung lai = Y: ");
            scanf("%s",&ch);
            }
        while(ch!='y');
     
    }
    void Xuat(Stack *S)              //Xuat ngan xep
    { char Y;
    Stack*P;
        P=S;
        while(P!=NULL)
            {
            Pop(Y,P);
            printf("\t%c",Y);
            }
    }
     
    void Day(Stack *S)                //In phan tu day va cac phan tu con lai
    {
    char X;
    Stack *K;
    K=NULL;
        while (S!=NULL)
            {
                Pop(X,S);
                Push(X,K);
            }
            Pop(X,K);
            printf("\nDay: %c",X);
            while(K!=NULL)
            {
                  Pop(X,K);
                  Push(X,S);
            }
            printf("\nSau day:\n");
            Xuat(S);
    }
     
    main()
    {
          clrscr();
          S=NULL;
          Tao(S);
          printf("\nNXVT: \n");
          Xuat(S);
          Day(S);
          getch();
          return 1;
    }
    
    File đính kèm (đổi đuôi .TXT thành .CPP nhé):

    Các file đính kèm:

Chia sẻ trang này

Advertising: Linux system admin | nukeviet | nukeviet 4 | Upload ảnh miễn phí