NIM: 2440116675
Week 2
Learning Outcome:
LO1: Explain the concept of data structure and its usage in application
LO2: Demonstrate how to create any learned data structure
Soal Review
1. Uraikan pengertian single linked list? Ilustrasikan cara membuat single linked list!
3. Buatlah tabel perbandingan antara linked list dan array! Mana yang lebih baik dan kapan
digunakan?
Soal Case
Buatlah sebuah program database sederhana dengan menggunakan single linked list!
1. Push data mahasiswa. Ketika dijalankan, akan diminta input berupa nim, nama, dan
jurusan. Validasi nim maksimal 10 angka, nama maksimal 30 karakter, dan jurusan
maksimal 50 karakter. Validasi jumlah data yang dapat diinput maksimal 5 data.
2. Menampilkan semua daftar nim, nama, dan jurusan tiap mahasiswa. Pada saat ditampilkan
diurutkan (sort) berdasarkan nim.
1. Single Linked List adalah sebuah struktur data yang terdiri dari sebuah urutan nodes
yang berisi sebuah reference (link) ke node selanjutnya secara berurutan. Linked List
memungkinkan penambahan dan penghapusan nodes di manapun di dalam list dan dapat
dilakukan hanya jika link antara node yang ditambahkan dan dihapus tersebut selalu
terjaga.
Nilai tidak disimpan dalam memory Nilai disimpan dalam memory locations
locations yang berurutan (acak) yang berurutan
Soal Case
Untuk compilernya, saya menggunakan replit.com.
tp1_data_structures - Replit
#include <stdio.h>
#include <malloc.h>
#include <math.h>
#include <string.h>
struct SMahasiswa
};
void insert();
void display();
void deleted();
int main(void)
int option = 0;
printf("Options\n");
scanf("%d", &option);
switch (option)
case 1:
insert();
break;
case 2:
display();
break;
case 3:
deleted();
break;
break;
return 0;
// Insert Data
void insert()
MAHASISWA dMahasiswa;
printf("NOTE: for input NAME & MAJOR, use CamelCase or Snake_case (no space) \n");
printf("NIM: ");
scanf("%lu", &dMahasiswa.nim);
printf("Nama: ");
scanf("%s", dMahasiswa.name);
printf("Jurusan: ");
scanf("%s", dMahasiswa.major);
do
++nNim;
} while (dMahasiswa.nim);
if (nNim != 10)
else
temp_node->nim = realNim;
*temp_node->name = *dMahasiswa.name;
*temp_node->major = *dMahasiswa.major;
first_node = temp_node;
else
head_node->next = temp_node;
temp_node->next = 0;
head_node = temp_node;
fflush(stdin);
// Display Data
void display()
int count = 0;
temp_node = first_node;
if (temp_node == 0)
else
printf("###################################");
count++;
temp_node = temp_node->next;
// Pop Data
void deleted()
if (first_node == NULL)
printf("\nList is Empty\n");
first_node = NULL;
free(first_node);
else
ptr = first_node;
ptr1 = ptr;
ptr = ptr->next;
ptr1->next = NULL;
free(ptr);