Deklarasi Stack
Kode Penjelasan
//Deklarasi Stack Mendeklarasikan tipe data baru yaitu stack.
typedef struct Stack { Stack terdiri sari dua variabel, yaitu array of
char items[MAX_LENGTH]; char items yang merupakan array untuk
int top; menyimpan stack itu sendiri, serta integer
} Stack; top untuk penanda indeks elemen items
yang terletak paling atas.
Fungsi isFull
Kode Penjelasan
int isFull(Stack* stack, int n){ Fungsi untuk megecek apakah variabel
if(stack->top == (n)-1) array pada stack sudah terisi penuh apa
return 1; belum. Fungsi ini menerima pointer stack
else dan integer n sebagai panjang dari string
return 0; input.
}
Fungsi ini akan membaca variabel top dari
stack. Ingatlah bahwa variabel top
menyimpan indeks elemen teratas. Jika
indeks sama dengan panjang string-1, maka
Praktikum Pemecahan Masalah dengan C (EL2208) | Tahun 2020-2021 | Semester Genap
Fungsi isEmpty
Kode Penjelasan
int isEmpty(Stack* stack) { Fungsi untuk megecek apakah variabel
if(stack->top == -1) array pada stack kosong atu tidak. Fungsi ini
return 1; menerima pointer stack.
else
return 0; Fungsi ini akan membaca variabel top dari
} stack. Ingatlah bahwa variabel top
menyimpan indeks elemen teratas. Jika
indeks sama dengan panjang -1, maka stack
maka stack masih kosong dan akan
dikembalikan 1, jika tidak maka stack sudah
tidak kosong dan akan dikembalikan 0.
Prosedur push
Kode Penjelasan
void push(Stack* stack, char item, Prosedur untuk menambahkan elemen
int n) { baru pada variabel array stack. prosedur ini
if (isFull(stack, n)) menerima pointer stack dan single-char
return; item, elemen yang ingin dimasukkan ke
++stack->top ; array items.
stack->items[stack->top] = item;
Pertama- tama, terdapat kondisional yang
}
menentukan apakah array sudah penuh
atau belum menggunakan fungsi isFull. Jika
sudah, maka array tidak bisa ditambah lagi
dan fungsi push langsung selesai.
Prosedur pop
Kode Penjelasan
char pop(Stack* stack) { Fungsi untuk menghapus elemen teratas
if (isEmpty(stack)) pada variabel array stack. Fungsi ini
return 0; menerima pointer stack.
return stack->items[stack->top--];
} Pertama-tama Pertama- tama, terdapat
kondisional yang menentukan apakah
array masih kosong atau tidak
menggunakan fungsi isEmpty. Jika masih
kosong, maka array tidak bisa dikurangi
lagi dan fungsi pop langsung selesai.
Main program
Kode Penjelasan
int main() { Mendeklarasikan variabel yang akan
char str[MAX_LENGTH] ; digunakan untuk menyimpan data string
input, yaitu array of char str yang memiliki
//Input string panjang maksimum MAX_LENGTH.
printf("Masukkan string: ");
scanf("%s" , str);
Selanjutnya adalah input string dari
pengguna, dilanjutkan dengan mencari
panjang string lalu menyimpan data
//Mencari panjang string
panjang string pada integer n.
int n = strlen(str);
Halaman 3 dari 7
Praktikum Pemecahan Masalah dengan C (EL2208) | Tahun 2020-2021 | Semester Genap
}
}
}
Halaman 4 dari 7
Praktikum Pemecahan Masalah dengan C (EL2208) | Tahun 2020-2021 | Semester Genap
Halaman 5 dari 7
Praktikum Pemecahan Masalah dengan C (EL2208) | Tahun 2020-2021 | Semester Genap
Halaman 6 dari 7
Praktikum Pemecahan Masalah dengan C (EL2208) | Tahun 2020-2021 | Semester Genap
Dengan menggunakan big-O-Notation, saya akan menganalisis kompleksitas waktu pada kondisi terburuk.
Berikut adalah analisis kompleksitas waktu dari kode yang saya buat:
Analisis kompleksitas waktu fungsi isFull, is Empty, prosedur push dan pop.
Untuk semua program tersebut, karena baik kode setelah if maupun seteleh else merupakan statement
dasar seperti assignment maupun increment/decrement, maka kompleksitas waktunya adalah 𝑂𝑂(1).
Analisis kompleksitas waktu main program
Karena mengandung for loop yang bergantung pada panjang input char str, maka kompleksitas
waktunya adalah 𝑂𝑂(𝑛𝑛)
Halaman 7 dari 7