Program List Berkait Tunggal dengan C


// List Berkait tunggal

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>

struct dt_teman{
       char nama[20];
       char alamat[30];
       char telepon[12];
       struct dt_teman *berikut;
       };
       struct dt_teman *kepala;
     
       void menu();
       void isi_data();
       void ubah_data();
       void hapus_data();
       void tampil_data();
     
       main()
       {
             /* menginisialisasi list berkait*/
           
             kepala=NULL;
           
             char pilih='0';
           
             while (pilih != '5')
             {
                   menu();
                   pilih=getche();
                   switch(pilih)
                   {
                                case '1':
                                     isi_data();
                                     break;
                                case '2':
                                     ubah_data();
                                     break;
                                case '3':
                                     hapus_data();
                                     break;
                                case '4':
                                     tampil_data();
                                     break;
                                case '5':
                                     break;
                                     }
                                     }
                                     return(0);
                                     }
                                   
                                     /* menampilkan menu */
                                     void menu()
                                     {
                                          printf("----------------------------\n");
                                          printf("           MENU        \n");
                                          printf("----------------------------\n");
                                       
                                          printf("1. mengisi data baru\n");
                                          printf("2. mengubah data\n");
                                          printf("3. menghapus data\n");
                                          printf("4. menampilkan data ke layar\n");
                                          printf("5. selesai\n");
                                       
                                       
                                          printf("----------------------------\n");
                                       
                                          printf("pilihan anda: ");
                                       
                                          }
                                     /* mengisi data baru*/
                                     void isi_data()
                                     {
                                          struct dt_teman *p;
                                          char nama[20];
                                       
                                          printf("\n\n");
                                          printf("nama ($- berhenti) : "); gets(nama);
                                          while (nama[0] !='$'){
                                                p=new struct dt_teman;
                                                strcpy(p->nama,nama);
                                                printf("alamat : ");gets(p->alamat);
                                                printf("nomor telepon : ");gets(p->telepon);
                                                p->berikut=kepala;
                                                kepala=p;
                                                printf("\n nama ($-berhenti): ");gets(nama);
                                                }
                                                }
                                             
                                     /*mengubah data*/
                                     void ubah_data()
                                     {
                                          char jawab, unama[20];
                                          struct dt_teman *p;
                                       
                                          printf("\n");
                                          printf("nama yang akan di ubah : ");scanf("%s",&unama);
                                       
                                     /*cari data*/
                                     p=kepala;
                                     while (p&&strcmp(unama,p->nama))
                                     p=p->berikut;
                                   
                                     if(!p){
                                     printf("data tersebut tidak ada...\n");
                                     getch();
                                     }
                                     else{
                                          printf("\n\n data lama \n");
                                          printf("--------------------------------------------\n");
                                          printf("nama          : %s\n",p->nama);
                                          printf("alamat        : %s\n",p->alamat);
                                          printf("nomor telepon : %s\n",p->telepon);
                                       
                                          printf("\n\n data baru \n");
                                          printf("--------------------------------------------\n");
                                          printf("nama          : %s\n",p->nama);
                                          printf("alamat        : ");scanf("%s",&p->alamat);
                                          printf("nomor telepon : ");scanf("%s",&p->telepon);
                                          }
                                          }
                                       
                                     /*menghapus data*/
                                     void hapus_data()
                                     {
                                          char jawab,hnama[20];
                                          struct dt_teman *p1,*p2;
                                       
                                          printf("\n");
                                          printf("nama yang akan dihapus : ");scanf("%s",&hnama);
                                       
                                     /*cari data*/
                                     p2=NULL;
                                     p1=kepala;
                                     while(p1&&strcmp(hnama,p1->nama))
                                     {
                                     p2=p1;
                                     p1=p1->berikut;
                                     }
                                   
                                     if (!p1)
                                     printf("data tersebut tidak ada...\n");
                                     else{
                                          printf("\n\n data yang akan dihapus\n");
                                          printf("------------------------------\n");
                                          printf("nama          : %s \n",p1->nama);
                                          printf("alamat        : %s \n",p1->alamat);
                                          printf("nomor telepon : %s \n",p1->telepon);
                                       
                                          printf("\n\n dihapus (Y/T)?");jawab=getche();
                                          if (jawab=='Y'||jawab=='y')
                                          {
                                          if(!p2)
                                          kepala=p1->berikut;
                                          else
                                          p2->berikut=p1->berikut;
                                          delete p1;
                                          }
                                          }
                                          }
                                       
                                     /* membaca data structure dari file */
                                     void tampil_data()
                                     {
                                     int i=1;
                                     struct dt_teman *p;
                                   
                                     /*baca data mulai dari kepala*/
                                     p=kepala;
                                   
                                   
                                     /*mencetak judul*/
                                     printf("\n\n");
                                     printf(" Data Teman Sekolah \n");
                                     printf("-------------------------------------------------------------------\n");
                                     printf("No.  Nama                   Alamat                        Telepon \n");
                                     printf("-------------------------------------------------------------------\n");
                                     while(p)
                                     {
                                     printf("%2d.  %-20s  %-30s  %-30s\n",i++,p->nama,p->alamat,p->telepon);
                                     p=p->berikut;
                                     }
                                     printf("--------------------------------------------------------------------\n");
                                   
                                     getch();
                                     }
                                                                   
                             
                 
                                   
                                   
                                   
                                             
                                       

2 komentar:

Komentar sobat sangat bermanfaat untuk perkembangan blog ini. Jangan lupa adab berkomentar, dan jangan buang waktu untuk spam. Artikel diatas boleh di Copy Paste... (Cantumkan Sumbernya), Terima Kasih!!!