diff --git a/ASD_Task_4.depend b/ASD_Task_4.depend index a544662..7b93fbe 100644 --- a/ASD_Task_4.depend +++ b/ASD_Task_4.depend @@ -19,3 +19,23 @@ "player.h" +1583510555 source:d:\informatika\semester 2\struktur data\asd_task_4\list.cpp + "list.h" + +1583510480 d:\informatika\semester 2\struktur data\asd_task_4\list.h + + + + +1583511651 source:d:\informatika\semester 2\struktur data\asd_task_4\main.cpp + "player.h" + "list.h" + + +1582797920 d:\informatika\semester 2\struktur data\asd_task_4\player.h + "list.h" + +1583513579 source:d:\informatika\semester 2\struktur data\asd_task_4\player.cpp + "player.h" + + diff --git a/ASD_Task_4.layout b/ASD_Task_4.layout index 5ec49e7..5034f6b 100644 --- a/ASD_Task_4.layout +++ b/ASD_Task_4.layout @@ -2,29 +2,29 @@ - + - + - + - + - + - + - + - + - + - + diff --git a/bin/Debug/ASD_Task_4.exe b/bin/Debug/ASD_Task_4.exe new file mode 100644 index 0000000..eba13eb Binary files /dev/null and b/bin/Debug/ASD_Task_4.exe differ diff --git a/list.cpp b/list.cpp index 847a957..6fc7e63 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,7 +30,7 @@ void deallocate(address &P) { * FS : menghapus elemen yang ditunjuk oleh P (delete) */ //------------- YOUR CODE HERE ------------- - + delete P; //---------------------------------------- } @@ -37,7 +40,17 @@ void insertFirst(List &L, address P) { * FS : elemen yang ditunjuk P menjadi elemen pertama pada List L */ //------------- YOUR CODE HERE ------------- - + if (first(L) != NULL){ + next(P) = first(L); + prev(P) = prev(first(L)); + next(prev(first(L))) = P; + prev(first(L)) = P; + first(L) = P; + } else { + first(L) = P; + next(P) = first(L); + prev(P) = P; + } //---------------------------------------- } @@ -47,7 +60,14 @@ void insertLast(List &L, address P) { * FS : elemen yang ditunjuk P menjadi elemen terakhir pada List L */ //------------- YOUR CODE HERE ------------- - + 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,9 +80,15 @@ address findElmByID(List L, infotype x) { address P = NULL; //------------- YOUR CODE HERE ------------- - + P = first(L); + do{ + P = next(P); + } while( P != first(L)&& info(P).ID != x.ID); + if (info(P).ID == x.ID){ + return P; + } //---------------------------------------- - return P; + return NULL; } address findElmByName(List L, infotype x) { @@ -74,9 +100,15 @@ address findElmByName(List L, infotype x) { address P = NULL; //------------- YOUR CODE HERE ------------- - + P = first(L); + do{ + P = next(P); + } while( P != first(L) && info(P).name != x.name); + if (info(P).name == x.name){ + return P; + } //---------------------------------------- - return P; + return NULL; } void deleteFirst(List &L, address &P) { @@ -85,7 +117,21 @@ void deleteFirst(List &L, address &P) { * FS : elemen pertama di dalam List L dilepas dan disimpan/ditunjuk oleh P */ //------------- YOUR CODE HERE ------------- - + if (first(L)==NULL){ + cout<<"List Kosong"<>x.ID; + P = findElmByID(L, x); + if(P != NULL){ + cout<<"music found"< 0) { + P = first(L); + int i = randomInt(panjang); + while (i != 0){ + P = next(P); + i--; + } + address Q = P; + deleteAfter(L,prev(P),Q); + insertFirst(L,Q); + panjang--; + } + cout<<"Shuffle Done"<