SỬ DỤNG STACK MÔ TẢ THUẬT TOÁN BUBBLE SORT


MODULE

Code:

void Bubble_Sort(Stack L) {
    Stack j, i = L->Next;
    while(i->Next!=NULL) {
        j = i->Next;
        while(j!=NULL) {
            if(i->Element>j->Element)
            {
                ElementType temp = i->Element;
                i->Element = j->Element;
                j->Element = temp;
            }
            j = j->Next;
        }
        i = i->Next;
    }
}

CHƯƠNG TRÌNH MẪU

Code:

#include "conio.h"
#include "stdio.h"
#include "alloc.h"

typedef int ElementType;
typedef struct Node {
    ElementType Element;
    Node *Next;
};
typedef Node *Stack;

//khoi tao danh sach rong
Stack MakeNull_Stack(){
    Stack Header = (Node*)malloc(sizeof(Node));
    (Header)->Next = NULL;
    return Header;
}
//kiem tra danh sach rong
char Empty_Stack(Stack S) {
    return S->Next == NULL;
}
//Khoi tao 1 node
Node *Make_Node(ElementType X) {
    Node *temp = (Node*)malloc(sizeof(Node));
    temp->Element = X;
    return temp;
}
//xem mot phan tu vao stack
void Push(ElementType X, Stack P) {
    Node *Temp = Make_Node(X);
    Temp->Next = P->Next;
    P->Next = Temp;
}
//day 1 phan tu ra khoi stack
void Pop(Stack P){
    Stack Temp;
    if (!Empty_Stack(P)){
        Temp = P->Next;
        P->Next = Temp->Next;
        free(Temp);
    }
}
Stack Input_Stack(int n) {
    Stack L = MakeNull_Stack();
    ElementType x;
    for(int i = 1; i<=n; i++) {
        printf("Phan tu %d = ",i);
        scanf("%d",&x);
        Push(x,L);
    }
    return L;
}
void Out_Stack(Stack L) {
    Stack temp = L;
    while(!Empty_Stack(temp)) {
        printf("%d\t",temp->Next->Element);
        temp = temp->Next;
    }
}

void Bubble_Sort(Stack L) {
    Stack j, i = L->Next;
    while(i->Next!=NULL) {
        j = i->Next;
        while(j!=NULL) {
            if(i->Element>j->Element)
            {
                ElementType temp = i->Element;
                i->Element = j->Element;
                j->Element = temp;
            }
            j = j->Next;
        }
        i = i->Next;
    }
}
void main() {
    clrscr();
    int n;
    printf("Nhap n = ");
    scanf("%d",&n);
    Stack L = Input_Stack(n);
    printf("Danh sach chua sap xep:\n");
    Out_Stack(L);
    printf("\nBubble Sort:\n");
    Bubble_Sort(L);
    Out_Stack(L);
    getch();
}