Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 3

//Fadel Najmi Adliansyah

//3337210008

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

struct game{
int rating;
int tahunRelease;
char genre[30];
char developer[30];
char namaGame[30];
struct game *next;
}*head, *tail, *current;

void pushHead(int rating, char namaGame[],int tahunRelease,char genre[],char


developer[]){

current = (struct game*)malloc(sizeof(struct game));


current->rating = rating;
current->rating = tahunRelease;
strcpy(current->namaGame, namaGame);
strcpy(current->genre, genre);
strcpy(current->developer, developer);

if(head == NULL){
head = tail = current;
}
else{
current->next = head;
head = current;
}
}

void pushTail(int rating, char namaGame[],int tahunRelease,char genre[],char


developer[]){
current = (struct game*)malloc(sizeof(struct game));
current->rating = rating;
current->rating = tahunRelease;
strcpy(current->namaGame, namaGame);
strcpy(current->genre, genre);
strcpy(current->developer, developer);

if(head == NULL){
head = tail = current;
}
else{
tail->next = current;
tail = current;
}
tail->next = NULL;
}

void popHead(){
current=head;
if(head==NULL){
printf("No data");
}else if(head==tail){
head=tail=NULL;
free(current);
}else{
head=head->next;
free(current);
}
}

void popTail(){
if(head==NULL){
printf("No data");
}else if(head==tail){
head=tail=NULL;
free(current);
}else{
struct game *temp=head;
while(temp->next!=tail){
temp=temp->next;
}
current=tail;
tail=temp;
free(current);
tail->next=NULL;
}
}

void print(){
current = head;
while(current != NULL){
printf("|-------------------------|\n");
printf("%s -> %d\n",current->namaGame,current->rating,current-
>tahunRelease,current->developer,current->genre);
current = current->next;
}
}

int main(){
int jumlah, i, rating, releaseDate ;
char namaGame[15], hapustambah, pilihan, lagi, genre[15], developer[15];
awal:
system("clear");
printf("|-------------------------|\n");
printf("| Program Linked List |\n");
printf("|-------------------------|\n");
printf("Input Jumlah Data : "); scanf("%d", &jumlah);
for(i=1; i<=jumlah; i++){
printf("Masukkan data ke %d: \n", i);
printf("NamaGame: "); scanf("%s", namaGame);
printf("Rating: "); scanf("%d", &rating);
printf("Tahun Release: "); scanf("%d", &releaseDate);
printf("Developer: "); scanf("%s", developer);
printf("Genre: "); scanf("%s", genre);
if(i == 1){
pushHead(rating, namaGame, releaseDate , genre , developer);
} else{
printf("Masukkan data ke Depan atau Belakang? (d untuk depan, b untuk
belakang): ");
scanf("%s", &pilihan);
if(pilihan == 'd'){
pushHead(rating, namaGame, releaseDate , genre , developer);
} else{
pushTail(rating, namaGame, releaseDate , genre , developer);
}
}
}
print();
printf("Mau Menghapus atau Menambah Data? (y untuk nambah, n untuk hapus) ");
scanf("%s", &hapustambah);
if(hapustambah == 'y'){
printf("NamaGame: "); scanf("%s", namaGame);
printf("Rating: "); scanf("%d", &rating);
printf("Tahun Release: "); scanf("%d", &releaseDate);
printf("Developer: "); scanf("%s", developer);
printf("Genre: "); scanf("%s", genre);
printf("Masukkan data ke Depan atau Belakang? (d untuk depan, b untuk
belakang): ");
scanf("%s", &pilihan);
if(pilihan == 'd'){
pushHead(rating, namaGame, releaseDate , genre , developer);
} else{
pushTail(rating, namaGame, releaseDate , genre , developer);
}
} else{
printf("Hapus Depan atau Belakang? (d untuk depan, b untuk belakang) ");
scanf("%s", &pilihan);
if(pilihan == 'd'){
popHead();
} else{
popTail();
}
}

print();
printf("Mau Menambah Data? (y untuk nambah, n untuk tidak) ");
scanf("%s", &lagi);
if(lagi == 'y'){
goto awal;
} else{
goto akhir;
}
akhir:
getchar();
return 0;
}

You might also like