Senin, 12 Juni 2017

Latihan 10.1 Modul 10

Latihan 10.1
Syntaxnya :

#include <stdio.h> // lan-balon.blogspot.co.id
#include <stdlib.h>
#include <malloc.h>

struct node /*Mendefiiskan struktur yang akan dirangkai sebai queue*/
{
int data;
struct node *p;
};

/*Mendefinisikan fungsi untuk menambah elemen ke dalam queue serta menempatkan pada akhir queue*/
void TambahElemen (struct node **d, struct node **b, int nilai)
{ /*Membuat struktur node baru*/
struct node *temp;
temp = (struct node*) malloc (sizeof(struct node));
/*Mendefinisikan field yang terdapat pada struktur node yang baru dialokasikan*/
temp -> data = nilai;
temp -> p = NULL;
if (*d == NULL)
{
*d = temp;
}
else
{
(*b) -> p = temp;
}
*b = temp;
}

void HapusElemen (struct node **d, struct node **b)
{
struct node *temp;
if (*d == NULL)
{
printf ("Tidak terdapat elemen dalam queue");
}
else
{
temp = *d;
*d = temp -> p;
free (temp);
if (*d == NULL)
{
*b = NULL;
}
}
}

void TampilkanNilai (struct node *d)
{
int nilai;
while (d != NULL)
{
nilai = d -> data;
printf ("%d\n", nilai);
d = d -> p;
}
}

int main (void)
{
struct node *depan, *belakang;
depan = belakang = NULL;
TambahElemen (&depan, &belakang, 10);
TambahElemen (&depan, &belakang, 20);
TambahElemen (&depan, &belakang, 30);
TambahElemen (&depan, &belakang, 40);
TampilkanNilai (depan);
HapusElemen (&depan, &belakang);
printf ("Nilai - nilai didalam queue");
printf ("Setelah penghapusan elemen pertama : \n");
TampilkanNilai (depan);
return 0;
}
    Hasil Runningnya :




    Modul 10 - Linked List

    Linked List

    Tujuan Praktikum :

    1.Dapat mengenal dan memahami linked list
    2.Dapat mengimlementasikan linked list pada bahasa c/c++


    Dasar Teori :


    Linked List adalah suatu cara untuk menyimpan data dengan struktur sehingga programmer dapat secara otomatis menciptakan suatu tempat baru untuk menyimpan data kapan saja diperlukan. Secara rinci, programmer dapat menulis suatu struct atau definisi kelas yang berisi variabel yang memegang informasi yang ada didalamnya, dan mempunyai suatu pointer yang menunjuk ke suatu struct sesuai dengan tipe datanya.


    Struktur dinamis ini mempunyai beberapa keuntungan dibanding struktur array yang bersifat statis. Struktur ini lebih dinamis, karena banyaknya elemen yang mudah ditambah atau dikurangi, berbeda dengan array yang ukurannya bersifat tetap. Disamping itu, manipulasi terhadap elemen seperti menyisipkan, menghapus, maupun menambah dapat dilakukan dengan lebih mudah.


    Ada beberapa macam Linked List, yaitu :
    1. Single Linked List
    2. Double Linked List
    3. Circular Linked List
    4. Multiple Linked List
    1. Single Linked List
    Single Linked List merupakan suatu linked list yang hanya memiliki satu variabel pointer saja. Dimana pointer tersebut menunjuk ke node selanjutnya. Biasanya field pada tail menunjuk ke NULL.
    contoh 
    :

    contoh codingannya :
    struct Mahasiswa
    {
       char nama[25];
       int usia;
       struct Mahasiswa *next;
    }*head,*tail;

    2. Double Linked List 
    Double Linked List merupakan suatu linked list yang memiliki dua variabel pointer yaitu pointer yang menunjuk ke node selanjutnya dan pointer yang menunjuk ke node sebelumnya. Setiap head dan tailnya juga menunjuk ke NULL.
    contoh :

    contoh codingannya :
    struct Mahasiwa
    {
       char nama[25];
       int usia;
       struct Mahasiswa *next,*prev;
    }*head,*tail;

    3. Circular Linked List
    Circular Linked List merupakan suatu linked list dimana tail (node terakhir) menunjuk ke head (node pertama). Jadi tidak ada pointer yang menunjuk NULL. Ada 2 jenis Circular Linked List, yaitu :
    • Circular Single Linked List


    • Circular Double Linked List


    Multiple Linked List
    Multiple Linked List merupakan suatu linked list yang memiliki lebih dar 2 buat variabel pointer. contoh : 

    Latihan 10.1
    Syntaxnya :

    #include <stdio.h> // lan-balon.blogspot.co.id
    #include <stdlib.h>
    #include <malloc.h>

    typedef struct nod
    {
    int data ;
    struct nod *next;
    } NOD, *NODPTR;

    void CiptaSenarai (NODPTR *s)
    {
    *s = NULL;
    }

    NODPTR NodBaru (int m)
    {
    NODPTR n;
    n = (NODPTR) malloc (sizeof(NOD));
    if (n != NULL)
    {
    n -> data = m;
    n -> next = NULL;
    }
    return n;
    }

    void SisipSenarai (NODPTR *s, NODPTR t, NODPTR p)
    {
    if (p == NULL)
    {
    t -> next = *s;
    *s = t;
    }
    else
    {
    t -> next = p -> next;
    p -> next = t;
    }
    }

    void CetakSenarai (NODPTR s)
    {
    NODPTR ps;
    for (ps = s; ps != NULL; ps = ps -> next)

    printf ("%d -->", ps -> data);
    printf ("NULL\n");

    }

    int main()
    {
    NODPTR pel;
    NODPTR n;
    CiptaSenarai (&pel);
    n = NodBaru(55);
    SisipSenarai (&pel, n, NULL);
    n = NodBaru(75);
    SisipSenarai (&pel, n, NULL);
    CetakSenarai(pel);
    return 0;
    }

      Hasil Runningnya :





      Latihan 10.2
      Syntaxnya :

      #include <stdio.h> // lan-balon.blogspot.co.id
      #include <stdlib.h>
      #include <conio.h>

      typedef struct Mahasiswa
      {
      int nim;
      Mahasiswa *next;
      }Mahasiswa;

      void init (Mahasiswa **p)
      {
      *p = NULL;
      }

      Mahasiswa *alokasi (int nim)
      {
      Mahasiswa *p;
      p = (Mahasiswa*) malloc (sizeof(Mahasiswa));
      if (p != NULL)
      {
      p -> next = NULL;
      p -> nim = nim;
      }
      return (p);
      }

      void add (Mahasiswa **p, int nim)
      {
      *p = alokasi(nim);
      printf ("%d", (*p) -> nim);
      }

      int main()
      {
      Mahasiswa *head;
      init (&head);
      add (&head,56);
      getch();
      return 0;
      }
        Hasil Runningnya :





        • Latihan 10.1

        Modul 9 - Queue ( Antrian )

        Antrian / Queue


        Tujuan Praktikum :

        1.Mahasiswa dapat mengenal dan memahami sruktur antrian 
        2.Mahasiswa dapat mengimplemen tasikan antrian (queue)


        Dasar Teori :

        Antrian / Queue adalah suatu kumpulan data yang menambahkan elemennya hanya hanya dapat dilakukan pada suatu ujung (disebut dengan sisi belakang atau rear), dan penghapusan atau pengambilan elemen dilakukan lewat ujung yang lain (disebut depan atau front). Antrian / queue mempunyai prinsip FIFO (First In First Out) bahwa yang pertama masuk maka yang pertama keluar. Dalam queue sendiri terdapat beberapa operasi , yaitu :
        1. Create : Menginisialisasi antrian.
        2. IsEmpty : Mengecek apakah queue kosong atau tidak.
        3. IsFull : Mengecek apakah queue sudah penuh atau belum.
        4. Enqueue : Menambahkan data di queue.
        5. Dequeue : Mengambil data dari queue.
        6. Clear : Menghapus data dalam antrian.
        7. View : melihat data dalam antrian
        Berbeda dengan stack, queue mempunyai 2 kata kunci, yaitu tail dan head. Head adalah penanda urutan paling depan, sedangkan tail adalah penanda urutan paling belakang. Karena jumlah operasinya banyak.

        Deklarasi Antrian / Queue

        1. Deklarasi Awal Queue

        Variabel yang akan digunakan adalah data (array sebagai tempat queue), head, tail.  Sama seperti Stack, Nilai dari head dan tail dimulai dari -1 yang menandakan queue kosong.  Sebagai contoh kita akan membuat queue dengan data maksimal sebanyak 7 data.

        #define max 7

        int data[max];
        int head =- 1, tail =- 1;

        2. IsEmpty

        Sama seperti di Stack, IsEmpty berguna untuk mengecek apakah queue kosong atau tidak.  Indikator bahwa queue kosong adalah nilai dari head dan tail bernilai -1.  Sehingga kita tinggal buat fungsi nya sebagai berikut :

        IsEmpty()
        {
           if (head == -1 && tail == -1)
               return true;
           else
               return false;
        }

        3. IsFull

        Operasi IsFull digunakan untuk mengecek apakah queue sudah penuh atau belum.  Indikator kalau queue penuh adalah nilai tail = max – 1.  Mengapa? karena nilai maksimal pada array yang mempunyai index 7 pada saat diakses akan mempunyai nilai maksimal 6.  Sehingga fungsi yang terbentuk seperti ini :

        IsFull()
        {
           if (tail == max-1)
               return true;
           else
               return false;
        }

        4. Enqueue

        Enqueue digunakan untuk memasukkan data kedalam queue.  Sama seperti push dalam stack.  Sebelum memasukkan data kedalam antrian, kita harus mengecek terlebih dahulu apakah queue / antrian sudah penuh atau belum.  Kalau belum maka kita harus mengecek apakah head sudah berada pada nilai 0 atau belum.  Ini sangat penting karena nilai head tidak akan lebih dari 0.  PERLU DIPERHATIKAN !  Yang akan bergerak terus adalah tail, sedangkan head hanya penunjuk urutan paling depan, sehingga nilainya tidak pernah lebih dari 0.  Kecuali antrian kosong, maka posisi head dan tail akan kembali menjadi -1.

        void Enqueue(){
           if (IsFull())
           {
               cout << "Antrian sudah penuh, mohon tunggu beberapa saat lagi ";
               getch();
           } 
           else 
               {
                  if (IsEmpty())
                  {
                     head = tail = 0;
                     cout<<"Masukkan data : ";cin>>data[tail];
                  }
                  else 
                     {
                        tail++;
                        cout << "Masukkan data : ";
                        cin >> data[tail];
                     }
               }
        }

        5. Dequeue

        Kebalikan dari fungsi enqueue, dequeue digunakan untuk mengambil data yang sudah masuk di urutan pertama.  Sehingga kita tinggal membaca data yang ada di posisi head.  Nah inilah fungsi dari head.  Jangan lupa kita cek dulu apakah queue kosong atau tidak.  Tapi jika ada isinya, setelah data diambil, data dibelakangnya digeser ke depan.

        void Dequeue()
        {
           if (IsEmpty())
           {
              cout << "Antrian kosong ! ";
              getch();
           }
              else 
                 {
                    cout << "Data yang diambil : " << data[head];
                    for (a = head; a <= tail-1 ;a++)
                    data[a] = data[a+1];
                    tail--;
                    if(tail == -1)
                    head = -1;
                 }
        }

        6. Clear

        Operasi clear digunakan untuk menghapus data yang ada di dalam queue.  Caranya cukup merubah nilai pada head dan tail menjadi -1.  Tidak perlu diperhatikan data yang ada di dalam array.  Nantinya data data tersebut juga akan ditimpa.

        void Clear()
        {
           head = tail =- 1;
           cout << "Antrian sudah dikosongkan ! ";
           getch();
        }

        7. View

        Operasi ini digunakan untuk melihat data yang ada didalam queue.  Caranya adalah dengan membaca data pada index yang terdapat diantara head sampai tail

        void View()
        {
           if (IsEmpty())
           {
              cout << "Antrian kosong ! ";
              getch();
           }
           else
              {
                 for(a = head; a <= tail; a++)
                 cout << "Data pada antrian ke " << a << " = " << data[a] << endl;
                 getch();
              }
        }


        Praktikum 9.1

        Konsep stack di logikakan seperti sebuah tumpukan barang yang tersusun ke atas dengan ketinggian tumpukan yang telah ditentukan. Untuk mengilustrasikannya program dibawah ini.

        Syntaxnya :


        #include <iostream.h> // Lan-balon.blogspot.co.id
        #include <stdio.h>
        #include <conio.h>
        #include <stdlib.h>


        main (void)
        {
        int cek = 0, data[8], x, hapus;
        char pil;

        do
        {
        cout << "Ujian Praktikum Struktur Data Queque" << endl;
        cout << endl;
        printf ("A. Masukan Data Antrian\n");
        printf ("B. Hapus Data Antrian\n");
        printf ("C. Lihat Data Antrian\n");
        printf ("D. Exit Program\n");
        cout << endl;
        printf ("Ketikan huruf dari salah satu pilihan diatas : ");
        pil = getche();
        cout << endl;

        if (pil != 'A' && pil != 'B' && pil != 'C' && pil != 'D')
        printf ("\n\nSalah ketik, ulangi lagi . . .\n");
        else
        {
        if (pil == 'A') //PUSH
        {
        if (cek == 8)
        printf ("\nAntrian penih\n");
        else
        {
        printf ("\nMasukan angka-> "); scanf ("%i", &x);
        data[cek] = x;
        cek++;
        }
        }
        else
        {
        if (pil == 'B') //POP
        {
        if (cek == 0)
        printf ("Maaf tidak ada antrian untuk dihapus\n\n");
        else
        {
        hapus = data[0];
        for (int v = 0; v < cek; v++)
        data[v] = data[v + 1];
        data[cek - 1] = NULL;
        cek--;
        cout << endl;
        printf ("Yaki anda ingin data ini dihapus ?");
        cout << endl;
        printf ("\nData dengan nilai = %i akan terhapus. [Tekan Enter]", hapus);
        }
        getch();
        }
        else
        {
        if (pil == 'C') //mengecek data
        {
        if (cek == 0)
        printf ("\nMaaf tidak ada antrian untuk ditampilkan\n\n");
        else
        {
        printf ("\n");
        for (int z = 0; z < cek; z++)
        {
        printf (" { ");
        printf ("%i", data[z]);
        printf (" } ");
        }
        }
        getch();
        }
        }

        }
        }
        }

        while (pil != 'D');
        cout << endl;
        cout << endl;
        printf ("Yakin anda ingin keluar ? {{{Tekan Enter}}}");
        pil = getche();
        }
          Hasil Runningnya :




          Penjelasannya :

          Program ini di buat untuk menyimpan data Antrian, kalian Bisa lihat Opsinya Ada A, B, C dan D itu Opsinya .. Kalau mau masuk pilih A, Hapus pilih B, Lihat Pilih C dan untuk keluar pilih D ..


          Praktikum 9.2
          Syntaxnya :

          #include <stdio.h> // lan-balon.blogspot.co.id
          #define N 20

          int nilai, jml, i;

          struct tumpukan //struktur tumpukan
          {
          int atas;
          int nilai[N];
          }T;

          main (void)
          {
          printf ("Jumlah Maksimal Tunpukan (<=20) = ");
          scanf ("%d", &jml);

          T.atas =- 1;
          do //perulangan do - while
          {
          if (T.atas == N-1) //manmpilkan apabila stack penuh
          {
          printf ("\nTumpukan penuh\n");
          }
          else
          if (T.atas == N-1 == 0) //pemilihan jika data masih penuh
          {
          T.atas++;
          printf ("Masukan data ke %d = ", i + 1); scanf ("%d", &nilai);
          T.nilai [T.atas] = nilai;
          }
          i++;
          }
          while (i < jml);
          //menampilkan isi stack
          for (i = T.atas; i >= 0; i--)
          {
          printf ("\nData ke %d = %d", i + 1, T.nilai[i]);
          }

            Hasil Runningnya :




            Minggu, 11 Juni 2017

            Latihan 8.1 Modul 8

            Latihan 8.1

            Konsep stack di logikakan seperti sebuah tumpukan barang yang tersusun ke atas dengan ketinggian tumpukan yang telah ditentukan. Untuk mengilustrasikannya program dibawah ini.

            Syntaxnya :


            #include <stdio.h> // lan-balon.blogspot.co.id
            #define N 20

            int nilai, jml, i;

            struct tumpukan //struktur tumpukan
            {
            int atas;
            int nilai[N];
            }T;

            main (void)
            {
            printf ("Jumlah Maksimal Tunpukan (<=20) = ");
            scanf ("%d", &jml);

            T.atas =- 1;
            do //perulangan do - while
            {
            if (T.atas == N-1) //manmpilkan apabila stack penuh
            {
            printf ("\nTumpukan penuh\n");
            }
            else
            if (T.atas == N-1 == 0) //pemilihan jika data masih penuh
            {
            T.atas++;
            printf ("Masukan data ke %d = ", i + 1); scanf ("%d", &nilai);
            T.nilai [T.atas] = nilai;
            }
            i++;
            }
            while (i < jml);
            //menampilkan isi stack
            for (i = T.atas; i >= 0; i--)
            {
            printf ("\nData ke %d = %d", i + 1, T.nilai[i]);
            }

              Hasil Runningnya :




              Penjelasannya :

              Program ini di buat sangat sederhana hanya memasukan nilai atau data sesuai jumlah yang diinginkan, dengan maksimal penginputan hingga 20 data, kalau lebih dari 20 maka tumpukan Penuh .. tidak bisa di Input lagi ..

              Modul 8 - Stack ( Tumpukan )

              Stack


              Tujuan Praktikum :

              1.Mahasiswa dapat memahami konsep stack pada bahasa c/c++
              2.Mahasiswa dapat menerapkan konsep stack dalam mengorganisir data
              3.Mahasiswa mampu menerapkan stack kedalam program


              Dasar Teori :

              Stack bisa diartikan sebagai suatu kumpulan data yang seolah-olah diletakan diatas data yang lain. Satu hal yang perlu diingat bahwa kita bisa menambahkan (menyisipkan) data dan mengambil (menghapus) data melalui ujung yang sama, yang disebut sebagai ujung atas stack (top of stack). Stack mempunyai sifat LIFO (Last In First Out) yang terahkir masuk adalah yang pertama keluar.

              Untuk menjelaskan pengertian diatas, kita ambil contoh sebagai berikut. Misalkan kita mempunyai 2 buah kotak yang ditumpuk, sehingga kotak yang satu akan ditumpuk diatas kotak yang lainnya. Jika kemudian tumpukan 2 kotak tadi, ditambah kotak ke-tiga, ke-empat, ke-lima dan seterusnya, maka akan diperoleh sebuah tumpukan kotak yang terdiri dari N kotak.

              Secara sederhana, sebuah stack bisa diilustrasikan seperti  ini:

              Dari gambar diatas,bisa dilihat bahwa kotak B terletak diatas kotak A dan ada dibawah kotak C. Kotak D terletak diatas kotak C, kotak E terletak diatas kotak D dan seterusnya sampai kotak terakhir. Dari gambar diatas menunjukkan bahwa dalam stack hanya bisa menambah atau mengambil sebuah kotak lewat satu ujung, yaitu bagian atas, dan yang menjadi ujungnya adalah kotak F. Jadi jika ada kotak lain yang akan disisipkan, maka kotak tersebut akan dletakkan diatas kotak F, dan jika ada kotak yang akan diambil, maka kotak F yang pertama akan diambil.


              Operasi Stack

              Dalam program c++ ada 2 cara penerapan prinsip stack ini yakni dengan array dan linked list . operasi-operasi dalam stack :
              1. Push : untuk menambahkan item pada tumpukan paling atas
              2. Pop : untuk mengambil item paling atas
              3. Clear : untuk mengosongkan stack
              4. Empty : fungsi yang digunakan untuk mengecek apakah stack sudah kosong
              5. Full : fungsi yang digunakan untuk mengecek apakah stack sudah penuh

              Praktikum 8.1
              Syntaxnya :

              #include <iostream.h> // lan-balon.blogspot.co.id
              #include <conio.h>
              #define max 10

              struct tumpukan //struktur tumpukan
              {
              int atas;
              int data[max];
              }T;

              void awal() //awal untuk menentukan nilai awal
              {
              T.atas =- 1;
              }

              int kosong() //kosong untuk melanjutkan pengisian tumpukan
              {
              if (T.atas == -1)
              return 1;
              else
              return 0;
              }

              int penuh() //penuh untuk memberhentikan tumpukan
              {
              if (T.atas == max-1)
              return 1;
              else
              return 0;
              }

              void input (int data) //input untuk memasukan data
              {
              if (kosong () == 1) //pemilihan jika data masih kosong
              {
              T.atas++;
              T.data [T.atas] = data;
              cout << "Data " << T.data[T.atas] <<" masuk ke stack\n";
              }
              else
              if (penuh () == 0) //pemilihan jika data masih penuh
              {
              T.atas++;
              T.data [T.atas] = data;
              cout << "Data " << T.data [T.atas] << " masuk ke stack\n";
              }
              }

              void hapus() //hapus untuk menghapus data paling atas
              {
              if (kosong() == 0) //mengambil data paling atas
              {
              cout << "Data teratas sudah terambil\n";
              T.atas--;
              }
              else //menampilkan jika data kosong
              cout << "Data kosong\n";
              }

              void tampil() //parameter menampilkan isi data
              {
              if (kosong() == 0) //pemilihan menampilkan isi data
              {
              for (int i = T.atas; i >= 0; i--)
              {
              cout << "\nTumpukan ke "<< i + 1 << "=" << T.data[i];
              }

              }
              else //jika salah maka menampilkan tumpukan kosong
              cout << "Tumpukan kosong\n";
              }

              void bersih() //parameter memebersihkan semua data
              {
              T.atas =- 1;
              cout << "Tumpukan kosong!\n";
              }

              main(void)
              {
              int pil, data;
              awal();
              do //perulangan do - while
              {
              cout << "\n1. Input\n2. Hapus\n3. Tampil\n4. Bersihkan\n5. Keluar\nMasukan pilihan : ";
              cin >> pil;

              switch (pil) //pemilihan perintah
              {
              case 1:
              cout << "Masukan data = "; cin >> data;
              input (data);
              break;

              case 2:
              hapus();
              break;

              case 3:
              tampil();
              break;

              case 4:
              bersih();
              break;

              case 5:
              cout << "Terimakasih, tekan enter untuk keluar";
              }
              getch();
              }
              while (pil != 5);

              }
                Hasil Runningnya :




                Penjelasannya :

                Program ini di buat menggunakan konsep stack yaitu dimana suatu kumpulan data yang seolah-olah diletakan diatas data yang lain, Didalam struct terdapat 2 buah variabel / anggota yaitu int atas untuk menyatakan variabel atas, dan variabel array int data[max] dengan nilai tetap 10 angka (#define max 10)Cara kerja program. Untuk inputan data, angka yang akan dimasukan 2 buah angka yaitu 23 dan 44. Kita akan memasukan angka 1 yang kemudian akan masuk ke variabel pil dimana akan dilakukan penyeleksian switch - case, jika angka benar akan memasukan kembali angka untuk inputan nilai, nilai tersebut akan masuk ke void input (). 



                Praktikum 8.2

                Syntaxnya :


                #include <iostream.h> // lan-balon.blogspot.co.id
                #include <conio.h>
                #include <string.h>

                struct tumpukan //struktur tumpukan
                {
                char data[15][100], max[15];
                int i, j;
                } stack;

                void push() //push untuk mengisi data
                {
                stack.i++;
                cout << "Masukan Data : ";
                cin >> stack.max;
                strcpy (stack.data[stack.i], stack.max); //perintah mennyalin data char panjang menggunakan fungsi string
                }

                void pop() //pop untuk menggambil data
                {
                if (stack.i > 0)
                {
                cout << "Data yang Terambil : " << stack.data[stack.i] << endl; //data akan terambil paling atas
                stack.i--; stack.j--;
                }
                else
                cout << "Tak ada Data yang Terambil" << endl; //jika tidak ada data
                }

                void view (int n) //print untuk menampilkan data
                {
                if (stack.j > 0) //menampilkan isi data menggunakan perulangan for
                {
                for (int e = n; e >= 1; e--)
                {
                cout << stack.data[e] << endl;
                }
                }
                else
                cout << "Tak Ada Data Tersimpan" << endl; //jika tidak ada data
                }

                void clear() //clear untuk menghapusdata
                {
                stack.j = 0; stack.i = 0; //perintah untuk menghapus keseluruhan data
                }

                main (void)
                {
                int n, pilih;
                ayo:
                cout << "Contoh Program Stack (Tumpukan)\n";
                stack.data[n];
                stack.i = 0;
                stack.j = 0;
                balik: //fungsi goto

                cout << "\n1. Push\n2. Pop\n3. View\n4. Clear\n5. Quit\n";
                cout << "\nPilih : "; cin >> pilih;
                cout << "\n";
                if (pilih == 1) //pemilihan pilihan menggunakan if
                {
                if (stack.j < n)
                {
                stack.j++; push();
                }
                else
                {
                cout << "Tumpukan Penuh" << endl;
                getch();
                }
                goto balik;
                }
                else
                if (pilih == 2)
                {
                pop (); getch(); goto balik;
                }
                else
                if (pilih == 3)
                {
                view (stack.i); getch(); goto balik;
                }
                else
                if (pilih == 4)
                {
                clear(); getch(); goto balik;
                }
                else
                if (pilih == 5)
                {
                getch(); goto ayo;
                }
                else
                {
                cout << "Input Anda Masukan Salah !!!";
                getch(); goto ayo;
                }
                }
                  Hasil Runningnya :




                  Penjelasannya :

                  Program ini di Buat hampir sama dengan Latihan 8.1 ..