Rabu, 09 April 2014

Code Queue

Queue dengan Linked List sebenarnya cara memakainya sama dengan membuat linked list biasa, hanya saja pada queue masukkin data dari rear(push belakang) dan menghapus data dari front (pop depan)
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);

pushDepan(name,age);
}

void popDepan(){
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{
head = head->next;
printf("Data %s",curr->nama);
free(curr);
}
printf(" sudah dihapus\n");
getchar();
}
}

void menu2(){
popDepan();
}

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