Translate


Breaking News

Tokoh wayang

games

Jumat, 08 Juli 2011

Contoh Source Code Linked List (C,C++)

Code ini merupakan contoh dari penggunaan linked list untuk melakukan penambahan node di depan, belakang, menghapus node dari depan, dan lain sebagainya,untuk lebih jelasnya silahkan coba sendiri,hehehe..
Untuk include-nya yang digunakan yaitu stdio.h,stdlib.h,conio.h,dan string.h.

typedef int infotype;

typedef struct tNode *address;

typedef struct tNode
{
 char nama[20];
 long int JumlahPenduduk;
 address Next;
}Negara;

typedef struct
{
 address First;
}List;

void CreateEmpty(List *L);
int IsEmpty(List L);
address Alokasi(Negara N);
void InsertFirst(List *L, address P);
void InsertVFirst(List *L, Negara N);
void PrintInfo(List L);
void DelLast(List *L);
void DelFirst(List *L);

void InsertLast(List *L, address P);
void InsertVLast(List *L, Negara N);

void JumlahTerbanyak(List L);
void PrintNegaraJumlahGanjil(List L);
void PrintNegaraHurufA(List L);
int JmlhNegaraHurufA(List L);

void CreateEmpty(List *L)
{
 (*L).First=NULL;
}

int IsEmpty(List L)
{
 if(L.First==NULL)
  return 1;
 else
  return 0;
}

address Alokasi(Negara N)
{
 address P=(Negara*)malloc(sizeof(Negara));
 if(P!=NULL)
 {
  strcpy(P->nama,N.nama);
  P->JumlahPenduduk=N.JumlahPenduduk;
  P->Next=NULL;
 }
 return P;
}

void InsertFirst(List *L, address P)
{
 P->Next=(*L).First;
 (*L).First=P;
}

void InsertVFirst(List *L, Negara N)
{
 address P=Alokasi(N);
 InsertFirst(L,P);
 printf("inputan berhasil...");
}

void InsertLast(List *L, address P)
{
  address R;
  R=(*L).First;
  while(R!=NULL)
  {
   if(R->Next==NULL)
   {
    R->Next=P;
    P->Next=NULL;
   }
   R=R->Next;
  }
}

void InsertVLast(List *L, Negara N)
{
 address P=Alokasi(N);
 InsertLast(L,P);
 printf("inputan berhasil...");
}

void PrintInfo(List L)
{
 address P;
 P=L.First;

 if(!IsEmpty(L))
 {
  do
  {
   printf("\nNama Negara :%s\n",P->nama);
   printf("Jumlah Penduduk :%d\n",P->JumlahPenduduk);
   P=P->Next;
  }while(P!=NULL);
 }
 else printf("List Kosong...");
 getch();
}

void DelFirst(List *L)
{
 address P;
 if(IsEmpty(*L)==1)
  printf("list kosong");
 else
 {
  P=(*L).First;
  (*L).First=(*L).First->Next;
  free(P);
  printf("list negara berhasil dihapus!!!");
 } 
}


void JumlahTerbanyak(List L)
{
 address P,R;
 P=L.First;
 R=L.First;

 if(!IsEmpty(L))
 {
  do
  {
   if(P->JumlahPenduduk>R->JumlahPenduduk)
   {
    R=P;
   }
   else
   {
   } P=P->Next;
  }while(P!=NULL);
  printf("\nNama negara dengan jumlah terbesar %s",R->nama);
 }
 else printf("List Kosong...");
 getch();
}

void PrintNegaraJumlahGanjil(List L)
{
 address P;
 P=L.First;

 if(!IsEmpty(L))
 {
  do
  {
   if(P->JumlahPenduduk>500000&&P->JumlahPenduduk%2==1)
   {
   printf("\nNama Negara :%s\n",P->nama);
   printf("Jumlah Penduduk :%d\n",P->JumlahPenduduk);
   }
   P=P->Next;
  }while(P!=NULL);
 }
 else printf("List Kosong...");
 getch();
}

void PrintNegaraHurufA(List L)
{
  address P;
 P=L.First;

 if(!IsEmpty(L))
 {
  do
  {
   if(P->nama[0]=='A')
   {
   printf("\nNama Negara :%s\n",P->nama);
   printf("Jumlah Penduduk :%d\n",P->JumlahPenduduk);
   }
   P=P->Next;
  }while(P!=NULL);
 }
 else printf("List Kosong...");
 getch();
}

JmlhNegaraHurufA(List L)
{
 address P;
 
 int a=0;
 P=L.First;

 if(!IsEmpty(L))
 {
  do
  {
   if(P->nama[0]=='A')
   {
   a++;
   }
   P=P->Next;
  }while(P!=NULL);
 }
 return a;
}

void main()
{
 int pil;
 List myList;
 Negara N;
 CreateEmpty(&myList);

 do
 {
  system("cls");
  printf("=========================== MENU =========================\n");
  printf("1. insert data negera\n");
  printf("2. show data negara\n");
  printf("3. delete data pertama\n");
  printf("4. insert last\n");
  printf("5. negara dengan jumlah terbanyak\n");
  printf("6. show data negara dengan penduduk ganjil lebih dari 500.000\n");
  printf("7. tugas - jumlah negara yang berawalan dengan huruf A\n");
  printf("0. exit\n\n");
  printf("========================== MENU ==========================\n");
  printf("masukkan pilihan:");scanf("%d",&pil);
  switch(pil)
  {
  case 1:
   printf("masukkan nama negara:");scanf("%s",&N.nama);
   do{
    printf("masukkan jumlah penduduk:");scanf("%d",&N.JumlahPenduduk);
   }while(N.JumlahPenduduk<100000);
   InsertVFirst(&myList, N);
   getch();
   break;
  case 2:
   printf("isi data\n");
   PrintInfo(myList);
   getch();
   break;
  case 3:
   DelFirst(&myList);
   getch();
   break;
  case 4:
    printf("masukkan nama negara:");scanf("%s",&N.nama);
   do{
    printf("masukkan jumlah penduduk:");scanf("%d",&N.JumlahPenduduk);
   }while(N.JumlahPenduduk<100000);
   InsertVLast(&myList, N);
   getch();
   break;
  case 5:
   JumlahTerbanyak(myList);
   getch();
   break;
  case 6:
   PrintNegaraJumlahGanjil(myList);
   getch();
   break;
  case 7:
   //PrintNegaraHurufA(myList);
   printf("Jumlah negara yang berawalan huruf a :%d",JmlhNegaraHurufA(myList));
   getch();
   break;
  }
 }while(pil!=0);
 printf("\t\t\t\t\t\t\tdenata25\n");
 getch();
}

Tidak ada komentar:

Designed By Blogger Templates