Anda di halaman 1dari 4

SSOAL 1

SOAL
Buatlah program linked list untuk data mahasiswa (NIM dan Nilai), tambahkan prosedur untuk
menambah dan menghapus data. Setelah itu, buatlah juga program dengan output menampilkan
nilai rata-rata dari data nilai yang dimasukkan pada linked list tersebut!
JAWABAN
~code~
#include <stdio.h>
#include <stdlib.h>

   Node *tail;
}
point;

int apply(point *list) //membangun head node


{
   Node *p = (Node*) malloc (sizeof(Node));
   list->head = list->tail = p;
   list->tail->next = NULL;
}
void Insert(point *list,int *PLlength)//masuk node
{
   int positi+1)
       break;
{
scanf("%c",&p->Name[i]);
if(p->Name[i]=='\n') break;
}
printf("Masukkan NIM mahasiswa = ");
fgets(p->NIM, 13

(*PLlength)++;//panjang +1
printf("\n");
}
int Delete(point *list,int *PLlength)
{
   int position,i;
   Node *p,*pre,*del;//del menunjuk ke node yang dihapus, pre adalah predecessor
dari del

  if(*PLlength==0)//kosong
  {
     printf("Maaf, saat ini data masih kosong!\n");
     return 0;
  }w
{
scanf("%d",&position);
if(position>0&&position<=*PLlength)
break;
else
    {
       printf("ERROR! Masukkan kembali lokasi penghapusan dengan benar!");

1
       continue;
    }
}
for(p=list->head,i=1;i
printf("\n");
return 0;
}
int print(point *list,int *PLlength)//hasil ccetak
{
   int i,num=1,a=1,sum=0;
   float average;
   Node *p;
   if(*PLlength==0)//kosong
{
     printf("Maaf, saat ini data masih kosong\n\n");
     return 0;
  }
printf("\nNo. Nama NIM Nilai\n");
for( p = list->head->next; p; p = p->next)
{
printf("%d\t",num++);
for(i=0;i<15;i++)
      {
         if(p->Name[i]=='\n') break;
         printf("%c", p->Name[i]);
      }/nilai rerata
printf("Rerata nilai yaitu %.1f\n",average);
return 0;
}
int main()
{
   int op;
   point list;
   apply(&list);

   while(1)
   { mahasiswa\n");
     printf("(2) Menghapus data mahasiswa\n");
     printf("(3) Mencetak rerata nilai dari data mahasiswa\n");
     printf("(0) Keluar\n");
     printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
     scanf("%d",&op);
     switch(op)
     {
     case 1:Insert(&list,&Listlength); break;
     case 2:Delete(&list,&Listlength); break;
     case 3:print(&list,&Listlength); break;
     case 0:return 0;
     }
   }
  return 0;
}
ANALISA
Dengan menggunakan linked list, program ini menerima input berupa nama, NIM, dan
nilai lalu menampilkan rata-rata dari data yang telah diinputkan. Pertama beri header stdio.h dan
stdlib.h kemudian deklarasikanima inputan berupa nama, NIM, serta nilai mahasiswa. Jika posisi

2
ternyata overflow, program akan mencetak statement untuk user agar menginputkan kembali
posisi penambahan dengan benar.

Lalu pada fungsi int Delete, dimana program akan menerima inputan berupa lokasi
penghapusan node. S Pertama program akan mengecek apakah di dalam linked list sudah berisi
node, jika tidak maka program akan menampilkan bahwa data masih kosong. Jika ternyata telah
ada isinya, barulah program akan mengecek lokasi node yang akan dihapus tadi. Saat lokasi
ketemu, program akan mengurangi panjang node sebagai PLlength-- dan akan kembali ke menu
utama program.

Pada fungsi int print, program akan menghitung akumulasi dari semua data yang masuk
pada void Insert tadi. Jika panjang linked list masih 0, program akan menampilkan output data
masih kosong. Jika sudah ada isinya, maka dengan for loop seluruh data akan ditampilkan berupa
No. Nama NIM dan Nilai. Kemudian program akan mengakumulasi total nilai sebagai sum dan
menghitung average (rata-rata) dan nilai rerata tersebut akan dicetak juga diakhir.

Pada int main program akan menampilkan beberapa menu pilihan yaitu menambahkan
data, menghapus data, mencetak data, serta keluar. Pada awal dijalankan program akan dimintai
input option menu lalu option yang dipilih akan dibaca dan dijalankan oleh program sesuai seperti
yang telah dijabarkan masing-masing fungsinya di atas.
1. Fungsi Insert

~MENAMPILKAN DATA YANG TELAH DITAMBAHKAN~

2. Fungsi Delete

3
~MENAMPILKAN DATA SETELAH DATA KE-2 DIHAPUS~
3. Fungsi Print

4. Jika lokasi penambahan tidak tepat

5. Saat data masih kosong

Anda mungkin juga menyukai