STACK DENGAN LIST Defri Kurniawan defri kurniawandsn dinus

  • Slides: 18
Download presentation
STACK DENGAN LIST Defri Kurniawan defri. kurniawan@dsn. dinus. ac. id

STACK DENGAN LIST Defri Kurniawan defri. kurniawan@dsn. dinus. ac. id

Struktur Data 2018

Struktur Data 2018

Struktur Data 2018

Struktur Data 2018

Struktur Data 2018

Struktur Data 2018

Struktur Data 2018

Struktur Data 2018

Struktur Data 2018

Struktur Data 2018

Struktur Data 2018

Struktur Data 2018

Struktur Data 2018

Struktur Data 2018

Struktur Data 2018

Struktur Data 2018

Definisi header #define true 1 #define false 0 #define boolean unsigned char #define Nil

Definisi header #define true 1 #define false 0 #define boolean unsigned char #define Nil NULL #define Max. El 10 typedef int infotype; typedef struct t. Elmt. Stack *address; Struktur Data 2018

Definisi header (lanjutan) typedef struct t. Elmt. Stack { infotype info; address next; }

Definisi header (lanjutan) typedef struct t. Elmt. Stack { infotype info; address next; } Elmt. Stack; typedef struct { address TOP; } Stack; #define Info(P) (P)->info #define Next(P) (P)->next #define TOP(S) (S). TOP Struktur Data 2018

Operasi-operasi Stack. List void Create. Stack(Stack *S) { TOP(*S) = Nil; } boolean Is.

Operasi-operasi Stack. List void Create. Stack(Stack *S) { TOP(*S) = Nil; } boolean Is. Empty(Stack S) { return (TOP(S)==Nil); } boolean Is. Full(Stack S) { return (Nb. Elmt(S)==Max. El); } Struktur Data 2018

Alokasi & Dealokasi address Alokasi(infotype X) { address P; P = (address)malloc(sizeof(Elmt. Stack)); if(P!=Nil)

Alokasi & Dealokasi address Alokasi(infotype X) { address P; P = (address)malloc(sizeof(Elmt. Stack)); if(P!=Nil) { Info(P) = X; Next(P) = Nil; } else { P = Nil; } return P; } void Dealokasi(address *P) { free(*P); } Struktur Data 2018

Latihan �Jika Is. Empty() adalah fungsi pengecekkan Stack kosong, Is. Full() adalah fungsi pengecekkan

Latihan �Jika Is. Empty() adalah fungsi pengecekkan Stack kosong, Is. Full() adalah fungsi pengecekkan Stack penuh. Dan alokasi(x) adalah prosedur untuk pemesanan ukuran memori beralamat P serta pemberian nilai X bertipe infotype dan elemen Next bernilai Nil (Null). Maka buatlah prosedur penambahan/push() dengan 3 (tiga) kondisi jika Is. Empty(), Is. Full dan selain kedua kondisi tersebut (else)! �Benar point 10, Mendekati point Struktur 5 Data 2018

Operasi Push void Push(Stack *S, infotype X) { address P; P = Alokasi(X); if(Is.

Operasi Push void Push(Stack *S, infotype X) { address P; P = Alokasi(X); if(Is. Empty(*S)) { TOP(*S) = P; }else if(Is. Full(*S)) { print("Stack Fulln"); }else { Next(P) = TOP(*S); TOP(*S) = P; } } Struktur Data 2018

Latihan �Jika Is. Empty() adalah fungsi pengecekkan Stack kosong, dan dealokasi(x) adalah prosedur untuk

Latihan �Jika Is. Empty() adalah fungsi pengecekkan Stack kosong, dan dealokasi(x) adalah prosedur untuk pembebasan elemen Stack pada memori beralamat P. Maka buatlah prosedur penghapusan / pop() dengan menyertakan pengecekkan Is. Empty() dan prosedur dealokasi()! �Benar point 10, Mendekati point 5 Struktur Data 2018

Operasi Pop void Pop(Stack *S, infotype *X) { address P; if(Is. Empty(*S)) { printf("Stack

Operasi Pop void Pop(Stack *S, infotype *X) { address P; if(Is. Empty(*S)) { printf("Stack kosongn"); } else { P = TOP(*S); *X = Info(P); if(Next(P)==Nil) { TOP(*S) = Nil; } else { TOP(*S) = Next(TOP(*S)); } Next(P) = Nil; Dealokasi(&P); } } Struktur Data 2018

TERIMA KASIH Struktur Data 2018

TERIMA KASIH Struktur Data 2018