Tugas Stack
Subject Programmer
IF-381 NATAN WILLY SUHERMAN
Topik Program Studi
PYTHON PROGRAMMING PART 1 SISTEM INFORMASI
Bidang NIM
- - 1219024
Case Study 1: Judulnya
Bertujuan mempelajari tipe data stack yang dapat diibaratkan tumpukan data yang memiliki ciri khas.
Beberapa diantaranya First in, Last out.
Source Code
1 import [Link].*;
2 import [Link];
3
4 class Stack {
5
6 private final int nMin = 0; //String Indeks
7 private final int nMax = 9; // End Indeks
8 private final int ValEmpty = -9999; //Indicate Empty
9 ValueBase
10
11 private int[] Ti = new int[10]; //array contains
12 number
13 private int Top; //Top-Most indeks
14
15
16 //konstruktor tanpa primeter
17 Stack() {
18 //mengisi array dengan value -9999
19 //tidak ada array yg kosong
20 //yang ada adalah array dengan value -9999
21 diasumsikan kosong
22 for (int i=1; i<=[Link]; i++){
23 [Link][i] = [Link];
24 }
25
26 //Stack kosong artinya Top = -1
27 [Link] = -1;
28
29 void setTop (int newTop){
30 [Link] = newTop;
31 }
32
33 //Getter (mengambil[] indeks Top
34 int getTop(){
35 return([Link]);
36 }
37
38 void setInfoTop(int v){
39 [Link][[Link]()] = v;
40 //[Link][s] = 300;
41 }
42
43 //Getter (Mengambil value pada indeks Top
44 int getInfoTop(){
45 return([Link][Top]);
46 }
47
48 //Mengambil data tampung stack
49 //Diperlukan karena, nMin=0 dan java nMax=9
50 //Sebab array pada java dimulai dari indeks 0
51 // maka diakhiri dengan indeks 9 agar mampu menampung
52 10 element
53 //Sehingga perlu membuat method utk meReturn
54 kapasitas. Kapasitaas = nMax + 1
55
56 int getMaxCap(){
57 return([Link] + 1);
58 }
59 //Operator boolean
60 //mengembalikan TRUE jika stack penuh
61 boolean isFull(){
62 return([Link]() == [Link]);
63 }
64
65 //operator boolean
66 //mengembalikan TRUE jika stack kosong
67 boolean isEmpty(){
68 return([Link]() == -1); //kalo 0, masih
69 dianggap berisi
70 }
71 //operator PUSH: menambah element
72 void push(int v){
73 //pastikan bahwa stack tidak penuh
74 if(![Link]()){
75 [Link]([Link]() + 1);
76 //Mengubah posisi top
77 [Link](v); //Mengisi nilai
78 pada Top
79 }
80 }
81
82 //Operator POP: Mengambil element
83 //Diambil element pada posisi TOP
84 void Pop(){
85 //Pastikan bahwa stack kosong
86 if(![Link]()){
87 [Link](ValEmpty);
88 [Link]([Link]() - 1);
89 //Mengubah Posisi
90 }
91 }
92
93 //menampilkan isi stack
94 void info(String name){
95 //pastikan bahwa stack tidak kosong
96 if (![Link]()){
97 [Link]("");
98 [Link](name);
99 for (int i = [Link]; i<=[Link]();
100 i++) {
101 [Link]("Ti["+i+"] = " +
102 [Link][i]);
103 }
104 } else {
[Link]("Stack Kosong");
}
}
//operator boolean
void insert (int idx, int v){
//pop semua elemen pada stack S mulai dari TOP
s/d idx
//simpan hasil POP ke arrTemp biar bisa diambil
kembali berurutan
//push elemen yang baru ke stack S
// POP semua elemen pada arrTemp, lalu push ke
stack S
int i;
int j;
int[] arrTemp = new int[[Link]() - idx +
1]; //array penampung sementara
//Looping POP dari stack S lalu push ke arrTemp
j = 0;
for (i= [Link](); i>=idx; i--){
arrTemp[j] = [Link]();
[Link]();
j++
}
//Push elemen V
[Link](v);
//Kembalikan semua elemen dari arrTemp ke stack
S
for (i=j-1; i>=0; i--){
[Link](arrTemp[i]);
}
}
void remove(int idx){
//POP smw elemen pada stack S mulai dari TOP s/d
idx+1
//simpan hasil POP ke arrTemp, agar bisa diambil
kembali berurutann
//POP stack S untuk membuang index yang ke idx
//POP semua elemen pada arrTemp, lalu push ke
stack S
int i; //menentukan batasan arrTemp
int j; //membantu mengisi arrTemp
int temp;
//membuat if apabila idx yang dimasukan (ingin
diremove) lebih besar dari TOP
if ([Link]() >= idx){
int[] arrTemp = new int [[Link]() - idx +
1];
//Looping Pop
for (i= [Link](); i >= idx + 1; i--){
arrTemp[j] = [Link]();
[Link]();
j++;
}
//Pop inddex(idx) yang ditentukan
[Link]();
//Mengembalikan elemen yang disimpan di arrTemp
ke stack
for (i = j-1 ;i >= nMin ;i--){
[Link](arrTemp[i]);
}
} else {
[Link]("idx Exceed, Maximum = " +
[Link]() + ", Given = " + idx);
}
}
//============== FILE YANG BERBEDA LAGI =================
/*
Bertujuan mempelajari tipe data stack yang dapat diibaratkan tumpukan data yang memiliki
ciri khas. Beberapa diantaranya First in, Last out. Berikut diatas prosedur dan fungsi yang
dibuat pada file sebelumnya.
*/
class StackDriver{
public static void main(String []args) {
Stack s1 = new Stack();
[Link](200);
[Link]("s1");
[Link](300);
[Link]("s1");
[Link](400);
[Link]("s1");
[Link]();
[Link]("s1");
//Mengambil index Top
[Link]("TOP = " + [Link]());
//Mengambil value Top
[Link]("TOP = " + [Link]());
//Insert Elemen
[Link]("=======");
[Link]("Insert");
[Link](2,888);
[Link]("s1");
//Remove Elemen
[Link]("");
[Link]("Remove 2");
[Link](2);
[Link]("s1");
//Remove Elemen Top ==Pop()
[Link]("");
[Link]("Remove Top");
[Link]([Link]());
[Link]("s1");
//Remove Elemen
[Link]("");
[Link]("Remove 10");
[Link](10);
[Link]("s1");
}
}
Uji coba program: