Bài 7- Cài đặt ngăn xếp bằng DSLK đơn

#include <stdio.h>

#include <ctype.h> // chua ham toupper

#include <conio.h>

#include <string.h>

#define TRUE 1

#define FALSE 0

typedef struct Data

{

   char ten[20];

};

 

typedef struct NODE

{

   Data info;

   NODE *next;

};

void MakeNullS( NODE **S);         

void Push(NODE **S, char X[20]);

void Pop(NODE **S, char Y[20]) ;  

void NhapStack(NODE **S);

void HienThi(NODE **S) ;

 

void main()

{  NODE *S;

   char chucnang;

   MakeNullS(&S);  // tao ngan xep rong

   do{clrscr();

      printf("\n\n");

      printf("\t   1: Nhap mot Stack\n");

      printf("\t   2: Hien thi Stack\n");

      printf("\t   3: Them mot phan tu vao Stack S\n"); // các bạn sinh viên tự làm phần này

      printf("\t   ESC: Ket thuc chuong trinh\n");

      printf("\t   Chuc nang ban chon: ");

      chucnang =getch();

      switch(chucnang)

      {

                  case '1': NhapStack(&S); break;

                  case '2': HienThi(&S);   getch(); break;

      }

   } while(chucnang!=27);

}

void MakeNullS( NODE **S)

{

   (*S) = NULL;

}

 

void Push(NODE **S, char X[20])

{

   NODE *p,*q;

   p=new NODE;

   strcpy(p->info.ten,X);

   q= (*S);

   p->next = q;

   (*S) = p;

}

 

void Pop(NODE **S, char Y[20])

{

   strcpy(Y,(*S)->info.ten);

   *S = (*S)->next;

}

 

void NhapStack(NODE **S)

{  char X[20]; char ch;

    do{

            printf("\nNhap mot xau tu:");

            gets(X);

            Push(S,X);

            printf("\nBan co tiep tuc nua khong(Y/N)?:");

            ch = getch();

            ch =toupper(ch);

       }while( ch !='N');

}

 

void HienThi(NODE **S)

{   char Y[20];

    printf("\n\n\n");

    NODE *p;

    p=(*S);

    if ( p==NULL) { printf("\nDanh sach rong"); return; }

    while(p!=NULL)

    {

      Pop(S,Y);

      printf("%s\n",Y);

      p=(*S);

    }

}

Bình luận

Bài viết khác

Bài 16- Thuật toán Ford -Fulkerson

Thuật toán Ford - Fulkerson  Việc chứng minh định lý luồng cực đại - lát cắt cực tiểu cho ta một thuật toán tìm luồng cực đại (thuật toán Ford- Fulkerson)

Bài 15-Cài đặt thuật toán Dijkstra

Năm 1959, Edsger W. Dijkstra đưa ra một thuật toán rất hiệu quả để giải bài toán đường đi ngắn nhất. Thuật toán thực hiện việc gán và giảm giá trị của nhãn tại mỗi đỉnh của đồ thị.

Bài 14-Thuật toán Prim

Thuật toán Prim do Robert Prim đưa ra vào năm 1957, ý tưởng chính của nó là lần lượt ghép vào cây khung các cạnh có trọng số tối thiểu liên thuộc với một đỉnh của cây mà không tạo ra chu trình trong cây. Thuật toán sẽ dừng khi có được n - 1 cạnh vào cây. Dưới đây là mô tả các bước của thuật toán Prim.

Bài 13-Cài đặt thuật toán Kruskal tìm cây khung tối thiểu

File dữ liệu về đồ thị dạng text;

ĐỐI TÁC CỦA CHÚNG TÔI