From a7adaea952645679046dad5c6bc9ce6edcbe3f08 Mon Sep 17 00:00:00 2001 From: Naufalyozha <59946871+Naufalyozha@users.noreply.github.com> Date: Sat, 7 Mar 2020 23:34:20 +0700 Subject: [PATCH 1/3] Update list.cpp --- list.cpp | 98 +++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 87 insertions(+), 11 deletions(-) diff --git a/list.cpp b/list.cpp index 847a957..f0664f1 100644 --- a/list.cpp +++ b/list.cpp @@ -5,7 +5,7 @@ void createList(List &L) { * FS : first(L) diset Nil */ //------------- YOUR CODE HERE ------------- - + first(L) == NULL; //---------------------------------------- } @@ -17,7 +17,10 @@ address allocate(infotype x) { address P = NULL; //------------- YOUR CODE HERE ------------- - + P = new elmlist; + info(P) = x; + next(P) = NULL; + prev(P) = NULL; //---------------------------------------- return P; } @@ -27,17 +30,29 @@ void deallocate(address &P) { * FS : menghapus elemen yang ditunjuk oleh P (delete) */ //------------- YOUR CODE HERE ------------- - + delete P; //---------------------------------------- } - void insertFirst(List &L, address P) { /** * IS : List L mungkin kosong * FS : elemen yang ditunjuk P menjadi elemen pertama pada List L */ //------------- YOUR CODE HERE ------------- - + if ( first(L) == NULL ) + { + first(L) = P; + next(P) = P; + prev(P) = P; + } + else + { + next(P) = first(L) ; + prev(P) = prev(first(L)); + next(prev(first(L))) = P; + prev(first(L)) = P; + first(L) = P; + } //---------------------------------------- } @@ -47,7 +62,19 @@ void insertLast(List &L, address P) { * FS : elemen yang ditunjuk P menjadi elemen terakhir pada List L */ //------------- YOUR CODE HERE ------------- - + address Prec; + Prec = first(L); + if (first(L) == NULL) + { + insertFirst(L,P); + } + else + { + next(P) = first(L); + prev(P) = prev(first(L)); + next(prev(first(L))) = P; + prev(first(L)) = P; + } //---------------------------------------- } @@ -60,7 +87,16 @@ address findElmByID(List L, infotype x) { address P = NULL; //------------- YOUR CODE HERE ------------- - + P = first(L); + do + { + P = next(P); + } + while((P != first(L)) && (x.ID != info(P).ID)) ; + if ((P == first(L)) && (x.ID != info(P).ID)) + { + return NULL; + } //---------------------------------------- return P; } @@ -74,7 +110,16 @@ address findElmByName(List L, infotype x) { address P = NULL; //------------- YOUR CODE HERE ------------- - + P = first(L); + do + { + P = next(P); + } + while((P != first(L)) && (x.name != info(P).name)); + if (P == first(L) && (x.name != info(P).name)) + { + return NULL; + } //---------------------------------------- return P; } @@ -95,7 +140,21 @@ void deleteLast(List &L, address &P) { * FS : elemen tarakhir di dalam List L dilepas dan disimpan/ditunjuk oleh P */ //------------- YOUR CODE HERE ------------- - + P = first(L); + if (next(P) == first(L)) + { + first(L) = NULL; + next(P) = NULL; + prev(P) = NULL; + } + else + { + first(L) = next(first(L)); + next(prev(P)) = first(L); + prev(first(L)) = prev(P); + next(P) = NULL; + prev(P) = NULL; + } //---------------------------------------- } @@ -106,7 +165,10 @@ void insertAfter(List &L, address &Prec, address P) { * ditunjuk pointer Prec */ //------------- YOUR CODE HERE ------------- - + prev(next(Prec)) = P; + next(P) = next(Prec); + next(Prec) = P; + prev(P) = Prec; //---------------------------------------- } @@ -117,7 +179,21 @@ void deleteAfter(List &L, address &Prec, address &P) { * dan disimpan/ditunjuk oleh P */ //------------- YOUR CODE HERE ------------- - + P = next(Prec); + if (next(next(Prec)) == Prec) + { + next(P) = NULL; + prev(P) = NULL; + next(Prec) = Prec; + prev(Prec) = Prec; + } + else + { + next(Prec) = next(P); + prev(next(P)) = Prec; + next(P) = NULL; + prev(P) = NULL; + } //---------------------------------------- } From e3ace0ece514a812b92add4a4dd3db9e89053428 Mon Sep 17 00:00:00 2001 From: Naufalyozha <59946871+Naufalyozha@users.noreply.github.com> Date: Sat, 7 Mar 2020 23:35:10 +0700 Subject: [PATCH 2/3] Update list.h --- list.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/list.h b/list.h index 4468d0f..50d13c3 100644 --- a/list.h +++ b/list.h @@ -29,14 +29,16 @@ typedef struct elmlist *address; struct elmlist { //------------- YOUR CODE HERE ----------- - + infotype info; + address prev; + address next; //---------------------------------------- }; struct List { //------------- YOUR CODE HERE ----------- - + address first; //---------------------------------------- }; From 709b2898664c35620996fa8346fb524823a0050c Mon Sep 17 00:00:00 2001 From: Naufalyozha <59946871+Naufalyozha@users.noreply.github.com> Date: Sat, 7 Mar 2020 23:36:42 +0700 Subject: [PATCH 3/3] Update player.cpp --- player.cpp | 50 ++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 46 insertions(+), 4 deletions(-) diff --git a/player.cpp b/player.cpp index 31ef288..59579e7 100644 --- a/player.cpp +++ b/player.cpp @@ -43,9 +43,29 @@ void shuffleList(List &L) { * FS : isi (elemen) dari list teracak */ //------------- YOUR CODE HERE ------------- - + address P = first(L); + int i = 0; + do + { + P = next(P); + i++; + } + while (P != first(L)); + while ( i > 0) + { + P = first(L); + int j = randomInt(i); + while( j != 0) + { + P = next(P); + j--; + } + address Q = P; + deleteAfter(L, prev(P), Q); + insertFirst(L, Q); + i--; cout<<"UNDER MAIN TENIS"<