Konsep dan prinsip dasar struktur data stack

 Struktur data stack adalah salah satu struktur data linier yang sangat penting dalam pemrograman.
Stack mengikuti prinsip Last-In-First-Out (LIFO), di mana elemen terakhir yang dimasukkan ke
dalam stack akan menjadi elemen pertama yang dihapus. Konsep dan prinsip dasar stack sangat
penting untuk memahami cara kerja dan penggunaan stack dalam pemrograman.
Stack adalah kumpulan elemen homogen (elemen dengan tipe data yang sama) yang disimpan
secara berurutan.
Stack memiliki dua operasi utama: push dan pop.
1. Push: Menambahkan elemen ke atas stack.
2. Pop: Menghapus elemen teratas dari stack.
➢ Stack memiliki elemen teratas (top) yang menunjukkan posisi elemen yang baru saja
ditambahkan atau akan dihapus.
➢ Stack tidak memungkinkan akses langsung ke elemen-elemen di luar elemen teratas.
➢ Stack dapat diimplementasikan menggunakan struktur data array atau linked list.
 
berikut adalah contoh-contoh program struktur data stack:
 
 
#include <stdio.h>
#include <stdlib.h>

#define MAX_SIZE 100

// Struktur untuk merepresentasikan stack
struct Stack {
int array[MAX_SIZE];
int top;
};

// Fungsi untuk menginisialisasi stack
void initialize(struct Stack *stack) {
stack->top = -1;
}

// Fungsi untuk menambahkan elemen ke dalam stack (push)
void push(struct Stack *stack, int value) {
if (stack->top == MAX_SIZE - 1) {
printf("Stack penuh (isFull).\n");
} else {
stack->top++;
stack->array[stack->top] = value;
printf("%d ditambahkan ke dalam stack.\n", value);
}
}

// Fungsi untuk menghapus elemen dari stack (pop)
void pop(struct Stack *stack) {
if (stack->top == -1) {
printf("Stack kosong (isEmpty).\n");
} else {
printf("%d dihapus dari stack.\n", stack->array[stack->top]);
stack->top--;
}
}

// Fungsi untuk mendapatkan nilai teratas dari stack (peek)
void peek(struct Stack *stack) {
if (stack->top == -1) {
printf("Stack kosong (isEmpty).\n");
} else {
printf("Nilai teratas dari stack: %d\n", stack->array[stack->top]);
}
}

// Fungsi untuk memeriksa apakah stack kosong (isEmpty)
int isEmpty(struct Stack *stack) {
return stack->top == -1;
}

// Fungsi untuk memeriksa apakah stack penuh (isFull)
int isFull(struct Stack *stack) {
return stack->top == MAX_SIZE - 1;
}

int main() {
struct Stack stack;
initialize(&stack);

push(&stack, 1);
push(&stack, 2);
push(&stack, 3);

peek(&stack);

pop(&stack);
pop(&stack);
pop(&stack);

peek(&stack);

return 0;
}
 
 output :
 


 
 

Comments

Popular posts from this blog

If, If-else, For Loop, While Loop, Do-While Loop dengan Bahasa C

konsep dasar algoritma graf