TR7 - Struktur Data
TR7 - Struktur Data
TR7 - Struktur Data
NIM : 5232451004
Kelas : PTIK – D23
STRUKTUR DATA
1. Soal 1
#include <iostream>
struct Node {
int data;
Node* next;
};
if (*head == NULL) {
*head = newNode;
} else {
Node* lastNode = *head;
while (lastNode->next != NULL) {
lastNode = lastNode->next;
}
lastNode->next = newNode;
}
}
int main() {
Node* head = NULL;
int choice, data;
while (true) {
cout << "Masukkan pilihan:" << endl;
cout << "1. Tambah di awal" << endl;
cout << "2. Tambah di akhir" << endl;
cout << "3. Tampilkan elemen" << endl;
cout << "4. Keluar" << endl;
switch (choice) {
case 1:
cout << "Masukkan nilai: ";
cin >> data;
addAwal(&head, data);
break;
case 2:
cout << "Masukkan nilai: ";
cin >> data;
addAkhir(&head, data);
break;
case 3:
cout << "Elemen dalam linked list: ";
display(head);
break;
case 4:
return 0;
default:
cout << "Pilihan tidak valid" << endl;
}
}
return 0;
}
Output Soal 1
2. Modifikasilah program dari Soal 1 untuk menambahkan fungsi penghapusan elemen
tertentu dalam linked list berdasarkan nilai yang diberikan.
#include <iostream>
struct Node {
int data;
Node* next;
};
if (*head == NULL) {
*head = newNode;
} else {
Node* lastNode = *head;
while (lastNode->next != NULL) {
lastNode = lastNode->next;
}
lastNode->next = newNode;
}
}
previous->next = current->next;
delete current;
}
int main() {
Node* head = NULL;
int choice, data;
while (true) {
cout << "Menu:" << endl;
cout << "1. Tambah di awal" << endl;
cout << "2. Tambah di akhir" << endl;
cout << "3. Hapus elemen" << endl;
cout << "4. Tampilkan elemen" << endl;
cout << "5. Keluar" << endl;
cout << "Pilihan: ";
cin >> choice;
switch (choice) {
case 1:
cout << "Masukkan nilai: ";
cin >> data;
addAwal(&head, data);
break;
case 2:
cout << "Masukkan nilai: ";
cin >> data;
addAkhir(&head, data);
break;
case 3:
cout << "Masukkan nilai yang ingin dihapus: ";
cin >> data;
hapus(&head, data);
break;
case 4:
cout << "Elemen dalam linked list: ";
display(head);
break;
case 5:
return 0;
default:
cout << "Pilihan tidak valid" << endl;
}
}
return 0;
}
Output Soal 2
3. Buatlah program C++ yang memungkinkan pengguna untuk menambahkan elemen di
posisi tertentu dalam linked list
#include <iostream>
#include <iostream>
struct Node {
int data;
Node* next;
};
if (posisi == 1) {
newNode->next = *head;
*head = newNode;
} else if (posisi == 2) {
Node* current = *head;
if (current == NULL) {
cout << "Posisi tidak valid" << endl;
delete newNode;
} else {
newNode->next = current->next;
current->next = newNode;
}
} else {
cout << "Posisi tidak valid" << endl;
delete newNode;
}
}
if (current == NULL) {
return;
}
previous->next = current->next;
delete current;
}
int main() {
Node* head = NULL;
int choice, data, posisi, key;
while (true) {
cout << "Menu:" << endl;
cout << "1. Tambah di posisi tertentu" << endl;
cout << "2. Tampilkan elemen" << endl;
cout << "3. Keluar" << endl;
cout << "Pilihan: ";
cin >> choice;
switch (choice) {
case 1:
cout << "Masukkan angka: ";
cin >> data;
cout << "Masukkan posisi: ";
cin >> posisi;
addPosisi(&head, data, posisi);
break;
case 2:
cout << "Elemen dalam linked list: ";
display(head);
break;
case 3:
return 0;
default:
cout << "Pilihan tidak valid" << endl;
}
}
return 0;
}
Output Soal 3
4. Tambahkan fungsi untuk menghitung dan mengembalikan panjang dari linked list
#include <iostream>
struct Node {
int data;
Node* next;
};
if (*head == NULL) {
*head = newNode;
} else {
Node* lastNode = *head;
while (lastNode->next != NULL) {
lastNode = lastNode->next;
}
lastNode->next = newNode;
}
}
int main() {
Node* head = NULL;
int choice, data;
while (true) {
cout << "Menu:" << endl;
cout << "1. Tambah di awal" << endl;
cout << "2. Tambah di akhir" << endl;
cout << "3. Hitung panjang" << endl;
cout << "4. Tampilkan elemen" << endl;
cout << "5. Keluar" << endl;
cout << "Pilihan: ";
cin >> choice;
switch (choice) {
case 1:
cout << "Masukkan nilai: ";
cin >> data;
addAwal(&head, data);
break;
case 2:
cout << "Masukkan nilai: ";
cin >> data;
addAkhir(&head, data);
break;
case 3:
cout << "Panjang elemen: " << length(head) << endl;
break;
case 4:
cout << "Elemen dalam linked list: ";
display(head);
break;
case 5:
return 0;
default:
cout << "Pilihan tidak valid" << endl;
}
}
return 0;
}
Output Soal 4
5. Tambahkan fungsi untuk membalik urutan elemen dalam linked list.
#include <iostream>
struct Node {
int data;
Node* next;
};
if (*head == NULL) {
*head = newNode;
} else {
Node* lastNode = *head;
while (lastNode->next != NULL) {
lastNode = lastNode->next;
}
lastNode->next = newNode;
}
}
*head = prev;
}
int main() {
Node* head = NULL;
int choice, data;
while (true) {
cout << "Menu:" << endl;
cout << "1. Tambah di awal" << endl;
cout << "2. Tambah di akhir" << endl;
cout << "3. Balik urutan" << endl;
cout << "4. Tampilkan elemen" << endl;
cout << "5. Keluar" << endl;
cout << "Pilihan: "; cin >> choice;
switch (choice) {
case 1:
cout << "Masukkan nilai: ";
cin >> data;
addAwal(&head, data);
break;
case 2:
cout << "Masukkan nilai: ";
cin >> data;
addAkhir(&head, data);
break;
case 3:
reverse(&head);
break;
case 4:
cout << "Elemen dalam linked list: ";
display(head);
break;
case 5:
return 0;
default:
cout << "Pilihan tidak valid" << endl;
}
}
return 0;
}
Output Soal 5