Nama : [Kaera Yukio || CHANGE ME]
NPM : [2306839344 || CHANGE ME]Kalian diminta untuk membuat program pengelolaan toko buku dengan menggunakan konsep single linked list. Toko ini ingin memiliki sistem pencatatan buku dengan beberapa ketentuan, yaitu sebagai berikut:
Setiap buku disimpan dalam node dengan informasi berikut:
- ID Buku (integer)
- Judul Buku (string)
- Harga Buku (integer)
- Stok Buku (integer)
- Pointer ke node berikutnya.
Kalian diminta untuk melengkapi program ini agar dapat bekerja dengan baik. Berikut fungsi yang dibutuhkan:
addBookAtPosition
Menambahkan buku baru di posisi tertentu (indeks 1-based). Jika posisi lebih besar dari jumlah node, maka tambahkan data pada posisi terakhir.deleteBookByID
Menghapus buku berdasarkan ID Buku. Jika ID tidak ditemukan, maka akan ditampilkan pesan error.updateStock
Mengupdate jumlah stok sebuah buku berdasarkan ID Buku. Jika ID tidak ditemukan, maka akan ditampilkan pesan error.findBookByTitle
Mencari buku berdasarkan judul. Jika ada lebih dari satu buku dengan judul yang sama, maka kembalikan ID dan informasi buku pertama yang ditemukan.
#include<stdio.h>#include<stdlib.h>#include<string.h>typedefstructBook {
intid;
chartitle[100];
intprice;
intstock;
structBook*next;
} Book;
// Fungsi untuk membuat node baruBook*createBook(intid, char*title, intprice, intstock) {
Book*newBook= (Book*)malloc(sizeof(Book));
newBook->id=id;
strcpy(newBook->title, title);
newBook->price=price;
newBook->stock=stock;
newBook->next=NULL;
returnnewBook;
}
// TODO 1: Tambahkan fungsi `addBookAtPosition`// TODO 2: Tambahkan fungsi `deleteBookByID`// TODO 3: Tambahkan fungsi `updateStock`// TODO 4: Tambahkan fungsi `findBookByTitle`intmain() {
Book*head=NULL;
intchoice, id, price, stock, position;
chartitle[100];
do {
printf("\n=== Toko Buku ===\n");
printf("1. Tambah Buku di Posisi Tertentu\n");
printf("2. Hapus Buku berdasarkan ID\n");
printf("3. Update Stok Buku\n");
printf("4. Cari Buku berdasarkan Judul\n");
printf("0. Keluar\n");
printf("Pilih: ");
scanf("%d", &choice);
switch (choice) {
case1:
printf("Masukkan posisi, ID, Judul, Harga, dan Stok: ");
scanf("%d %d %s %d %d", &position, &id, title, &price, &stock);
// Panggil fungsi `addBookAtPosition`break;
case2:
printf("Masukkan ID buku yang ingin dihapus: ");
scanf("%d", &id);
// Panggil fungsi `deleteBookByID`break;
case3:
printf("Masukkan ID dan stok terbaru: ");
scanf("%d %d", &id, &stock);
// Panggil fungsi `updateStock`break;
case4:
printf("Masukkan judul buku yang ingin dicari: ");
scanf("%s", title);
// Panggil fungsi `findBookByTitle`break;
case0:
printf("Terima kasih.\n");
break;
default:
printf("Pilihan tidak valid. Silakan coba beberapa saat kembali.\\n");
}
} while (choice!=0);
return0;