Kênh Tên Miền chuyên cung cấp tên miền đẹp, giá rẻ! Hãy liên hệ kỹ thuật: 0914205579 - Kinh doanh: 0912191357 để được tư vấn, hướng dẫn miễn phí, Cảm ơn quý khách đã ủng hộ trong thời gian qua!
Friday, November 28, 2014

Viết chương trình cài đặt Ngăn xếp (Stack), sao đó viết các hàm xử lý Ngăn xếp đó như sau: Hàm nhập danh sách, In danh sách, xóa phần tử trong danh sách, sắp xếp danh sách, loại bỏ phần tử trùng nhau trong danh sách.



Bài Giải


/*
Name: Cau Truc Du Lieu - Ngan xep - Stack
Copyright: None
Author: Tran Anh
Description: http://www.code.tavn.net
*/
#include<conio.h>
#include<stdio.h>
#define Maxlength 100
typedef int ElementType;
typedef int Position;
typedef struct
{
    ElementType Elements[Maxlength];
    int Top_idx;
}Stack;

void MakeNull_Stack(Stack &S)
{
    S.Top_idx=Maxlength;
}

int Empty_Stack(Stack S)
{
    return S.Top_idx==Maxlength;
}

int Full_Stack(Stack S)
{
    return S.Top_idx==0;
}

ElementType Top(Stack S)
{
    if (!Empty_Stack(S))
        return S.Elements[S.Top_idx];
    else
        printf("Loi! Ngan xep rong");
}

void Pop(Stack &S)
{
    if(!Empty_Stack(S))
        S.Top_idx=S.Top_idx+1;
    else
        printf("Loi! Ngan xep rong");
}

void Push(ElementType X, Stack &S)
{
    if(Full_Stack(S))
        printf("Loi! ngan xep day");
    else
    {
        S.Top_idx=S.Top_idx-1;
        S.Elements[S.Top_idx]=X;
    }
}

void Sort(Stack &S)
{
    ElementType Temp;
    for(int i=S.Top_idx;i<Maxlength;i++)
        for(int j=i+1;j<=Maxlength;j++)
            if(S.Elements[i]>S.Elements[j])
                {
                    Temp=S.Elements[i];
                    S.Elements[i]=S.Elements[j];
                    S.Elements[j]=Temp;
                }
}

void Delete(Position X, Stack &S)
{
    X=S.Top_idx+X;
    ElementType Temp;

    while(!(X==S.Top_idx))
    {
        Temp=S.Elements[X];
        S.Elements[X]=S.Elements[X-1];
        S.Elements[X-1]=Temp;
        X--;
    }
    Pop(S);
}

void Distinc(Stack &S)
{
 for(int i=S.Top_idx;i<Maxlength-1;i++)
  for(int j=i+1; j<Maxlength;j++)
  {
   if (S.Elements[i]==S.Elements[j])
   {
   Delete(j-S.Top_idx,S);
   i++;
  // j++;
   }
 
}
}

void Inp_Stack(Stack &S)
{
    int n;
    ElementType x;
    printf("\t- Nhap vao so phan tu ngan xep: ");
    scanf("%d",&n);
    for( int i=0;i<n;i++)
    {
        printf("\t - Nhap phan tu thu %d: ",i);
        scanf("%d",&x);
        Push(x,S);
    }
}
void Out_Stack(Stack S)
{
    while(!Empty_Stack(S))
    {
        printf("%4d",S.Elements[S.Top_idx]);
        Pop(S);
    }
}
main()
{
    Stack S;
    MakeNull_Stack(S);
    Inp_Stack(S);

    printf("\n\t=> Ngan xep cua ban vua nhap: \n");
    Out_Stack(S);

    Sort(S);
    printf("\n\t=> Ngan xep da sap xep: \n");
    Out_Stack(S);

   Distinc(S);
 
    printf("\n\t=> Ngan xep da loai bo phan tu trung: \n");
    Out_Stack(S);
 
    getch();
}


0 comments:

Post a Comment

Popular Posts