Anda di halaman 1dari 6

TUGAS

PRAKTIKUM DASAR PEMROGRAMAN

Wan Abdilah Anugerah Putra


213305047/TL 2B

TEKNIK LISTRIK
POLITEKNIK NEGERI MADIUN

1
MODUL VII

JUDUL : Tumpukan

TUJUAN : Mengenal dan memahami tentang tumpukan

TEORI : Secara sederhana,sebuah tumpukan dapat diilustrasikan seperti gambar


berikut

Menyisipkan Menghapus

F
E Atas
D
C
B
A

Dari gambar diatas, bisa dilihat bahwa kotak B terletak di atas kotak A dan
ada dibawah kotak C. Dari gambar diatas menunjukan bahwa dalam
tumpukan hanya bisa menambah atau mengurang ( Mengambil ) sebuah
kotak melalui satu ujung, yaitu bagian atas.
Dari gambar tersebut bisa kita lihat bahwa yang menjadi ujung atas adalah
tumpukan F.Jadi jika ada kotak lain yang akan disisipkan, maka kotak
tersebut akan diletakan di atas kotak F, dan jika ada kotak yang akan
diambil, maka kotak F lah yang pertama kali diambil.
OPERASI TUMPUKAN
Ada dua operasi dasar yaitu
1. Operasi penyisipan data ( push)
Perintah push digunakan untuk memasukan data kedalam tumpukan.
Untuk lebih jelasnya perhatikan ilustrasi berikut ini.
Misal kita mempunyai data-data 3,25 dan 9 dalam tupukan dengan
posisi 3 palingbawah dan 9 paling atas. Dan kita akan memasukan

2
data 34 kedalam tumpukantersebut.Tentu saja data 34 akan diletakan
diatas data 9.

Push(34) Push(34)

34

9 9

25 25

3
3

Proses dari operasi push dapat dilihat pada pengalan program berikut ini;

void Push (NOD **T, char item)


{
NOD *n;

n = NodBaru(item);
n->next = *T;
*T = n;
}

2. Operasi penghapusan data (pop)


Operasi Pop adalah operasi untuk menghapus elemen yang terletah
pada posisi paling atas dari sebuah tumpukan. Sama halnya dengan
operasi push, maka deklarasi untuk pop dapat dilihat pada penggalan
program berikut;

3
4
Program :
//Wan Abdilah A.P
#include <iostream>
#include <malloc.h>
#include <stdlib.h>
using namespace std;

typedef enum{FALSE = 0, TRUE = 1} BOOL;


struct nod{
char data;
struct nod *next;
};
typedef struct nod NOD;
// uji tumpukan kosong
BOOL TumpukanKosong(NOD*T)
{
return((BOOL)(T==NULL));
}
//Ciptakan node baru
NOD *Nodbaru (char item){
NOD *n;
n = (NOD*) malloc(sizeof(NOD));
if(n !=NULL){
n->data = item; n->next = NULL;
}
return n;
}
void CiptaTumpukan (NOD **T)
{
*T = NULL;
}
//Push
int Push(NOD **T, char item){
NOD *n;
n = Nodbaru(item);
n->next = *T;
*T = n;
}
//Pop
char Pop(NOD **T)
{
NOD *p; char item; if ( ! TumpukanKosong(*T)){
p = *T;
*T = (*T) ->next;
item = p->data;
free(p);
}
5
return item; }
int CetakTumpukan (NOD *T)
{
NOD *p;
printf("T --> ");
for (p = T; p != NULL; p = p->next)
{
printf("[%c] --> ",p->data);
}
printf("NULL\n");
}
int main()
{
NOD *T;
CiptaTumpukan(&T);
Push(&T, 'I');
Push(&T, 'D');
Push(&T, 'E');
CetakTumpukan(T);
return 0;
}

Hasil tampilan program :

Anda mungkin juga menyukai