Tidak semua yang saya tulis dalam CERPEN adalah saya :)

Welcome to my Blog... Blog ini mengenai tugas kuliah, cerpen, artikel dan beberapa hal tentang saya dan hobi saya :) boleh COPAS, tapi izin dulu yaa, jangan rendahkan dirimu sebagai pelagiat. Terima kasih :)

Selasa, 05 Juni 2012

Struktur Data, Linked List (Senarai Berantai) dalam bahasa C++

Contoh Program Linked List dalam bahasa C++ : 

1. Contoh Program Linked List : 

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

typedef struct nod
{
int data;
struct nod *next;
} NOD, *NODPTR;

void CiptaSenarai (NODPTR *s)
{
    *s = NULL;
}
NODPTR NodBaru(int m)
{
   NODPTR n;
   n= (NODPTR) malloc(sizeof(NOD));
   if (n !=NULL)
   {
   n-> data = m;
   n-> next = NULL;
   }

   return n;
}
void SisipSenarai (NODPTR *s, NODPTR t, NODPTR p)
{
if (p==NULL){
       t -> next = *s;
       *s = t;
       }
else{
    t -> next = p -> next;
    p -> next = t;
    }
}

void CetakSenarai(NODPTR s)
{
   NODPTR ps;
   for (ps = s; ps != NULL; ps = ps -> next)
   printf("%d  --> ",ps -> data);
   printf("NULL\n");
getch();
}
//----------------------------------------------------------

int main()
{
clrscr();
    NODPTR pel;
    NODPTR n;
    int i,k, nilai;

    CiptaSenarai(&pel);
    printf("Masukan banyak data= ");
    scanf ("%d", &k);
    for(i=1;i<=k;i++)
    {
      printf ("Masukan datasenarai ke- %d= ",i);
      scanf ("%d", &nilai);
      n = NodBaru (nilai);
      SisipSenarai (&pel, n, NULL);
      }
      CetakSenarai (pel);
      return 0;
      }
      //------------------------------------


2. Contoh Program Single Linked List :
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <alloc.h>

int pil;
void pilih();
void buat_baru();
void tambah_belakang();
void tambah_depan();
void hapus_belakang();
void hapus_depan();
void tampil();

struct simpul
{
    char nim[8], nama [20];
    int umur;
    struct simpul *next;
} mhs, *baru, *awal=NULL, *akhir=NULL,*hapus,*bantu;


int main()
{
    do
    {
        clrscr();
        cout<<"MENU SINGLE LINKEDLIST"<<endl;
        cout<<"1. Tambah Depan"<<endl;
        cout<<"2. Tambah Belakang"<<endl;
        cout<<"3. Hapus Depan"<<endl;
        cout<<"4. Hapus Belakang"<<endl;
        cout<<"5. Tampilkan"<<endl;
        cout<<"6. Selesai"<<endl;
        cout<<"Pilihan Anda : ";
        cin>>pil;
        pilih();
    } while(pil!=6);
    return 0;
}

void pilih()
{
    if(pil==1)
        tambah_depan();
    else if(pil==2)
        tambah_belakang();
    else if(pil==3)
        hapus_depan();
     else if(pil==4)
        hapus_belakang();
      else if(pil==5)
        tampil();
    else
        cout<<"selesai";
}

void buat_baru()
{
    baru=(simpul*)malloc(sizeof(struct simpul));
    cout<<"input nim   : ";cin>>baru->nim;
    cout<<"input nama  : ";cin>>baru->nama;
    cout<<"input umur  : ";cin>>baru->umur;
    baru->next=NULL;
}

void tambah_belakang()
{
    buat_baru();
    if(awal==NULL)
    {
        awal=baru;
    }
    else
    {
        akhir->next=baru;
    }
    akhir=baru;
    akhir->next=NULL;
    cout<<endl<<endl;
    tampil();
}

void tambah_depan()
{
    buat_baru();
    if(awal==NULL)
    {
        awal=baru;
        akhir=baru;
        akhir->next=NULL;
    }
    else
    {
        baru->next=awal;
        awal=baru;
    }
    cout<<endl<<endl;
    tampil();
}

void hapus_depan()
{
    if (awal==NULL)
        cout<<"Kosong";
    else
    {
        hapus=awal;
        awal=awal->next;
        free(hapus);
    }
   cout<<endl<<endl;
    tampil();
}

void hapus_belakang()
{
    if (awal==NULL)
        cout<<"Kosong";
    else if(awal==akhir)
    {
         hapus=awal;
         awal=awal->next;
         free(hapus);
    }
    else
    {
        hapus=awal;
        while(hapus->next!=akhir)
             hapus=hapus->next;
        akhir=hapus;
        hapus=akhir->next;
        akhir->next=NULL;
        free(hapus);
    }
    cout<<endl<<endl;
    tampil();
}

void tampil()
{
     if (awal==NULL)
          cout<<"Kosong";
     else
     {
         bantu=awal;
         while(bantu!=NULL)
         {
            cout<<"nim : "<<bantu->nim;
            cout<<"  nama : "<<bantu->nama;
            cout<<"  umur : "<<bantu->umur<<endl;
            bantu=bantu->next;
         }
     }
     getch();
}

20 komentar:

  1. asalamualaikum mbak
    klu bleh minta contoh scrip program senarai yang lain
    kirim ke e-mail ea "nanang.sahabat@ymail.com"

    BalasHapus
  2. Waalaikumsalam..
    yang baru aku pelajari baru segitu, ntar kalo ada yang baru saya posting lagi.

    BalasHapus
  3. kenalan donk mba, biar bisa ajarin aku tentang senarai

    BalasHapus
  4. aku bingung ni mba, bisa minta tolong gak. uda ku otak atik tetep ja masih eror dan bahkan gak mau jalan,, gmana dunk ada solusi gak

    low bisa tolong jawabannya kirim ke email blackh3ry@yahoo.com


    //antrian melingkar

    #include
    #include
    #include
    #define n 10

    void Insert();
    void Delete();
    void Cetak();
    void Inisialisasi();
    using namespace std;
    int Pil,F,R,C;
    char Pilihan[1],Huruf;
    char Q[n];

    void main()
    {
    Inisialisasi();
    do
    {
    cout<<" Animasi Queue "<>Pilihan;
    Pil=atoi(Pilihan);
    switch (Pil)
    {
    case 1:
    Insert();
    break;
    case 2:
    Delete();
    break;
    case 3:
    Cetak();
    break;
    default:
    cout<<" Terima Kasih "<>Huruf;
    R=(R+1);
    Q[R]=Huruf;
    C++;
    }
    else
    cout<<"Antrian Penuh"<0)
    {
    Huruf=Q[F];

    cout<<"Data Yang Diambil \t:"<<Huruf<<endl;
    if(F+1)
    C--;
    }
    else
    cout<<"Antrian Kosong"<<endl;
    }

    void Inisialisasi(void)
    {
    F=0;
    R=-1;
    }

    void Reset(void)
    {
    F=0;
    R=-1;
    }

    BalasHapus
  5. satu lagi ni mba ,, 2 soal tapi bikin aku mabok.. hahahahah

    tolong bantuannya yahhh :)


    //antrian lurus

    #include
    #include
    #include
    #define n 10

    void INSERT(void);
    void DELETE(void);
    void CETAKLAYAR(void);
    void Inisialisasi(void);
    void RESET(void);
    int PIL,F,R;
    char PILIHAN[1], HURUF;
    char Q[n];
    //usingnamespace std;
    void main()

    {

    Inisialisasi();
    do
    {

    cout <<"Animasi Queue"<>HURUF;
    Q[++R]=HURUF;
    }

    else
    cout <<"Antrian penuh"<<endl;
    }
    void CETAKLAYAR(void)
    {
    if(F<R+1)
    {

    for (int i=F;i<=R;i++)
    cout <<"Q["<<1<<"]="<<Q[i]<<endl;
    }
    else
    cout <<"QUEUE Kosong"<<endl;
    }
    void DELETE(void)
    {

    if (F<=R+1)
    {

    HURUF=Q[F];
    Q[F++]='\0';
    cout <<"Data yang diambil :"<<HURUF<<endl;
    if (F==n)
    RESET ();

    }
    cout <<"Antrian kosong" <<endl;
    }
    void Inisialisasi(void)

    {

    F=0;

    R=2;

    }
    void RESET(void)

    {

    F=0;

    R=1;

    }

    BalasHapus
    Balasan
    1. maaf komennya baru kebaca sekarang hehe

      Hapus
  6. tlg mba, Outputx jg dtmplkan... cz sy coba copas program d atas tp ms error

    BalasHapus
    Balasan
    1. Mungkin salah dibagian petiknya mas.. tinggal diperbaiki aja. itu programnya jalan kok :)

      Hapus
  7. Mba bisa tanya tentang program enngggaaa???

    BalasHapus
  8. mba, mungkin pnya jejaring sosial facebook or twitter?? saya pingin lebih mendalami tentang linked list. nah dr jejaring sosial itu nanti kita bisa sharing. facebook saya tkj3.agus25@yahoo.co.id dan twitter @AbeBoanza. terimakasih

    BalasHapus
  9. kaaa minta izin, copy kodingnya kka buat bembelajaran linked list.. ya ya ya :)

    BalasHapus
  10. klo materi tentang linked list ad a mbak???

    BalasHapus
  11. mbk bisa minta tlong gk mbak buat program ini. .aku bingung bwtnya. .aku sudah coba bwt gk jadi2 eror aja. .tolong
    terima kasih

    Buatlah program data KTP, dengan menggunakan pointer pada struct KTP sebagai
    berikut:
    typedef struct
    {
    int tgl;
    int bln;
    int th;
    }Tanggal;
    typedef struct
    {
    char noID[5];
    char nama[30];
    char jenis_kelamin; //’L’ atau ‘P’
    Tanggal t;
    }KTP;
    typedef struct
    {
    KTP ktp;
    int jml;
    }Data_KTP;
    Data_KTP data_ktp;
    Data_KTP *p;

    Buatlah fungsi untuk:
    1. Menambah data
    2. Menampilkan data

    BalasHapus

Berikan Komentar Anda, Terima kasih :)