Rabu, 09 April 2014

Code Stack

Stack dengan Linked List sebenarnya cara memakainya sama dengan membuat linked list biasa, hanya saja pada Stack masukkin data dan menghapus data dari tempat yang sama, kalau mau dari belakang ya push dan pop belakang dan begitu pula sebaliknya.(sesuai dengan prinsip nya LIFO)
Berikut ini code nya:


#include <stdio.h>
#include <string.h>
#include <stdlib.h>

struct Facebook{
char nama[25];
int usia;
struct Facebook *next;
}*head,*tail;

void pushBelakang(char nama[], int usia){
struct Facebook *curr = (struct Facebook*) malloc(sizeof(struct Facebook));
strcpy(curr->nama,nama);
curr->usia = usia;
if(head == NULL){
head = tail = curr;
tail->next = NULL;
}else{
tail->next = curr;
tail = curr;
tail->next = NULL;
}
}

void line(){
int i;
for(i=0;i<33;i++){
printf("-");
}
printf("\n\n");
}

void cetak(){
struct Facebook *curr;
if(head != NULL){
line();
printf("%-25s|%-4s\n","Nama","Usia");
line();
for(curr=head;curr!=NULL;curr=curr->next){
printf("%-25s|%-4d\n",curr->nama, curr->usia);
}
line();
}
}

void popALL(){
struct Facebook *curr;
for(curr=head;curr!=NULL;curr=curr->next){
free(curr);
}
}

void clear(){
int i;
for(i=0;i<25;i++){
printf("\n");
}
}

void menu(){
printf("The FaceBook: 1990\n");
printf("1. Register\n");
printf("2. Abadon Data\n");
printf("3. Exit\n");
printf("Select Menu [1..3]: ");
}

void menu1(){
char name[25];
int age;
do{
printf("\nInput Name [3..24]: ");
gets(name);  //scanf("%[^\n]",name);
}while(strlen(name) < 3 || strlen(name) > 24);

do{
printf("Input Age <17 & >27: ");
scanf("%d",&age);
fflush(stdin);
}while(age >= 17 && age <=27);

pushBelakang(name,age);
}

void popBelakang(){
if(head == NULL){
system("color 0A");
printf("\nThere is no data yet\n");
getchar();
}else{
struct Facebook *curr = head;
if(head == tail){
//cuma ada 1 node;
head = tail = NULL;
printf("Data %s",curr->nama);
free(curr);
}else{
for(curr=head;curr->next != tail; curr=curr->next);
tail = curr;
printf("Data %s",curr->next->nama);
free(curr->next);
tail->next = NULL;
}
printf(" sudah dihapus\n");
getchar();
}

}

void menu2(){
popBelakang();
}

int main(){
int pilih;
do{
clear();
cetak();
menu();
scanf("%d",&pilih);
fflush(stdin);
switch(pilih){
case 1: menu1(); break;
case 2: menu2(); break;
}
}while(pilih != 3);
popALL();
return 0;
}

NB : Bahan yang ditulis berdasarkan apa yang pernah saya pelajari dari dosen dan juga slide-slide powerpoint dari Binus University .

Binus University     Skyconnectiva

Tidak ada komentar:

Posting Komentar