STRUKTUR DATA
Modul Praktikum 5
Disusun oleh:
Nim : 2107110665
1
Algoritma 2 : Membaca atau menampilkan
2
Algoritma 3 : Mencari sebuah simpul tertentu
1. Inisialisasi int i dan cur sama dengan head (cur = head)
2. Lakukan pengulanagan selama i kecil dari posisi -1 (while (i < -1))
3. Selama pengulanagan
a. Pointer cur menunjuk ke next (cur = cur -> next)
b. i bertambah satu (i++)
4. Jika perulangan telah tercapai, maka cetak Nim mahasiswa dengan pointer
cur menunjuk Nim ( cout<<”Nim mahasiswa : ”<< cur -> nim)
3
Algoritma 4 : Menyisipkan sebagai simpul terakhir
1. Ciptakan simpul baru (newNode) yang akan disisipkan.
2. Jika Linked List sudah ada maka penyisipan newNode dilakukan dengan
cara:
a. Pointer newNode menunjuk Nim (newNode -> Nim = nomor).
b. Pointer newNode menunjuk next (newNode -> next = NULL ).
c. Pointer tail menunjuk ke next (tail -> next = NULL)
d. Inisialisai tail sama dengan newNode (tail = newNode)
4
Flowchart 1 : menyisipkan sebagai simpul ujung(awal) dari linked list.
Start
Input Nim
Mahasiswa
end
5
Flowchart 2 : membaca atau menampilkan
Start
cur = head
End
6
Flowchar 3 : mencari sebuah simpul tertentu
Start
int i;
cur = head;
end
7
Flowchart 4 : menyisipkan simpul di akhir
Start
Input Nim
Mahasiswa
end
8
B. PERCOBAAN
Percobaan 1 : implementasikan operasi dasar single linked list (menyisipkan
sebagai simpul ujung(awal) dari linked list).
#include <iostream>
using namespace std;
struct nim {
int Nim;
nim *next;
};
nim *head, *tail, *cur, *newNode;
9
int main(){
cout<<"===================================="<<endl;
cout<< " linked List NIM Mahasiswa "<<endl;
create(2107112730);
print();
cout<<"====================================\n"<<endl;
10
Percobaan 2 : implementasikan operasi dasar single linked list (membaca atau
menampilkan).
#include <iostream>
using namespace std;
struct nim {
int Nim;
nim *next;
};
nim *head, *tail, *cur, *newNode;
11
int main(){
cout<<"===================================="<<endl;
cout<< " linked List NIM Mahasiswa "<<endl;
create(2107112730);
addFirst(2107110665);
print();
cout<<"====================================\n"<<endl;
12
Percobaan 3 : implementasikan operasi dasar single linked list (mencari sebuah
simpul tertentu. Tambahkan kondisi jika yang dicari adalah data yang paling
terdepan).
#include <iostream>
struct nim {
int Nim;
nim *next;
};
13
cur = cur -> next;
i++;
}
cout << " Nim Mahasiswa : " << cur -> Nim << endl;
}
// print linked list
void print () {
cur = head;
while (cur != NULL)
{
cout << " Nim Mahasiswa : "<< cur->Nim<< endl;
cur = cur->next;
}
}
int main(){
int pos;
cout<<"===================================="<<endl;
cout<< " linked List NIM Mahasiswa "<<endl;
create(2107112730);
addLast(2107110257);
addFirst(2107110665);
addLast(2107112737);
14
Percobaan 4 : implementasikan operasi dasar single linked list (menyisipkan
sebagai simpul terakhir).
#include <iostream>
struct nim {
int Nim;
nim *next;
};
15
cout<<" Tambahkan node di Akhir "<<endl;;
addLast(2107110257);
print();
cout<<"====================================\n"<<endl;
}
16
Percobaan 5 : gabungkan semua operasi diatas dalam sebuah menu pilihan
#include <iostream>
struct nim {
int Nim;
nim *next;
};
17
cout << " Nim Mahasiswa : " << cur -> Nim << endl;
}
create(2107112730);
addLast(2107110257);
addFirst(2107110665);
addLast(2107112737);
do{
menu:
border ();
cout << endl;
cout<< " pilih menu : "<<endl;
cout<< " 1. Tampilkan list saat ini"<<endl;
cout<< " 2. Tambahkan data di awal "<<endl;
cout<< " 3. Tambahkan data di akhir "<<endl;
cout<< " 4. Cari data " << endl;
cout<< " 5. Keluar " << endl;
border ();
cout<< " Masukkan pilihan [1/2/3/4/5]: " ;
cin >> input;
if(input == 1){
border();
print();
border();
18
}
else if (input == 2){
border();
cout << " Masukkan Nim Mahasiswa : ";
cin >> NimMhs;
addFirst(NimMhs);
border;
}
else if (input == 3)
{
border();
cout << " Masukkan Nim Mahasiswa : ";
cin >> NimMhs;
addLast(NimMhs);
border;
}
else if( input == 4){
border();
cout<<" lihat list ke : ";
cin>>pos;
posisi(pos);
border();
}
else if ( input == 5 ){
exit (0);
}
else {
cout << " Pilihan Tidak tersedia "<< endl;
goto menu;
}
}
while (input != 5);
19
20
21
22
C. PRAKTIKUM
1. TUJUAN PRAKTIKUM
23
2. DASAR TEORI
Array merupakan struktur data yang memesan tempat secara
berurutan untuk jumlah data statis. Sedangkan memory allocation (malloc)
adalah sebuah fungsi fasilitas untuk membentuk ruang secara berurutan
untuk tipe data pointer dengan jumlah data dinamis. Sedangkan linked list
adalah deretan elemen yang berdampingan. karena elemen tersebut
dialokasikan secara dinamis menggunakan malloc, linked list akan
terpencar di memori. Pointer di suatu elemen berisi alamat untuk data
berikutnya sebagai penjamin bahwa semua elemen dapat diakses.
Langkah membangun sebuah linked list:
a) Deklarasi simpul
Linked list terdiri dari elemen-elemen individu, dimana masing-
masng dihubungkan dengan pointer tunggal. Linked list dibentuk dengan
cara menunjuk pointer next suatu elemen ke elemen yang mengikutinya.
Berikut deklarasi sebuah variabel yang menggunakan struktur tersebut.
Struct simpul
{
Char nama[25];
Int nrp;
};
b) Alokasi memori
Fungsi alokasi_simpul() menggunakan malloc() untuk
mendapatkan memori aktual, yang akan menginisialiasasi suatu field data.
Next selalu diinisialiasi sebagai NULL.
Struct simpul* alokasi_simpul()
If (new = = NULL)
Return NULL;
24
Else
New_>next=NULL;
Return new;
ujung = alokasi_simpul();
else
Tampung = ujung;
}
25
3. PEMBAHASAN
#include <conio.h>
while
26
4. HASIL
Latihan 1 : program single linked list dengan prinsip LIFO
27
5. KESIMPULAN
28
6. LISTING PROGRAM
#include <iostream>
#include <bits/stdc++.h>
struct Nim
{
int data;
Nim* next;
};
Nim *top;
if (!temp)
{
cout << " List penuh";
}
temp->data = data;
temp->next = top;
top = temp;
}
29
int first()
{
if (!isEmpty())
return top->data;
else
cout << " Kosong "<< endl;
}
if (top == NULL)
{
cout << " List kosong" << endl;
}
else
{
temp = top;
top = top->next;
free(temp);
}
}
//print program
void display()
{
Nim* temp;
if (top == NULL)
{
cout << " List kosong";
}
else
{
temp = top;
while (temp != NULL)
{
cout << temp->data << endl;
temp = temp->next;
}
}
}
30
int main()
{
int input;
int NimMhs;
menu:
cout<< endl;
cout<< " Pilih menu : " <<endl;
cout<< " 1. Tampilkan data"<<endl;
cout<< " 2. Masukkan data "<<endl;
cout<< " 3. Hapus data (pop) "<<endl;
cout<< " 4. keluar "<< endl;
if(input == 1)
{
display();
goto menu;
}
else if(input == 2)
{
cout << " Masukkan NIM : ";
cin >> NimMhs;
push(NimMhs);
goto menu;
}
else if(input == 3)
{
pop();
goto menu;
}
else if(input == 4)
{
exit(0);
}
else {
cout<<" Menu Tidak tersedia ";
goto menu;
}
}
31