Saturday, 30 January 2016

Double Linked List

Double Link List adalah elemen-elemen yang dihubungkan dengan dua pointer dalam satu elemen dan list dapat melintas baik di depan atau belakang.
Elemen double link list terdiri dari tiga bagian:
- Bagian data informasi
- Pointer next yang menunjuk ke elemen berikutnya
- Pointer prev yang menunjuk ke elemen sebelumnya

Untuk menunjuk head dari double link list, pointer prev dari elemen pertama menunjuk NULL. Sedangkan untuk menunjuk tail, pointer next dari elemen terakhir menunjuk NULL.
Contoh Membuat TDA(Tipe Data Abstrak) dari Double Linked Circular List tersebut.
Instan :
Double Linked Circular List
Operasi :
Buat_node(char x) : membuat node baru dengan informasi x
Tambah_elemen_didepan() : menambah elemen paling depan (pointernya menunjuk
elemen pertama link list)
Tambah_elemen_dibelakang() : menambah elemen paling belakang (pointer elemen
yang baru menunjuk elemen pertama)
Hapus_elemen_() : Menghapus elemen (pointer menunjuk elemen yang akan dihapus)
Cetak () : menelusuri elemen satu demi dan menampilkan informasinya.
Ada 2 jenis Double Linked List yaitu :
•         Double Linked List Circular
•         Double Linked List Non Circular

1.     Double Linked List Circular
Pengertian secara umumnya DLLC itu Linked list yang menggunakan pointer, dimana setiap node memiliki 3 field, yaitu:
1 field pointer yang menunjuk pointer berikutnya “next“,
1 field menunjuk pointer sebelumnya ” prev “,
1 field yang berisi data untuk node tersebut .
Double Linked List Circular pointer next dan prev nya menunjuk kedirinya sendiri secara circular. Bentuk Node DLLC
Setiap node pada linked list mempunyai field yang berisi data dan pointer ke node berikutnya & ke node sebelumnya
Untuk pembentukan node baru , mulanya pointer next dan prev akan menunjuk ke nilai NULL
Selanjutnya pointer prev akan menunjuk ke node sebelumnya , dan pointer next akan menunjuk ke node selanjutnya pada list.
2.     Double Linked List Non Circular
DLLNC "Double linked list non circular" adalah Double Linked List yang memiliki 2 buah pointer yaitu pointer next dan prev.
Pointer next menunjuk pada node setelahnya dan pointer prev menunjuk pada node sebelumnya.
Pengertian:
Double : artinya field pointer-nya dua buah dan dua arah, ke node sebelum dan sesudahnya.
Linked List : artinya node-node tersebut saling terhubung satu sama lain.
Non Circular : artinya pointer prev dan next-nya akan menunjuk padaNULL.

Ilustrasi DLLNC
Setiap node pada linked list mempunyai field yang berisi data dan pointer ke node berikutnya & ke node sebelumnya
Untuk pembentukan node baru , mulanya pointer next dan prev akan menunjuk ke nilai NULL
Selanjutnya pointer prev akan menunjuk ke node sebelumnya , dan pointer next akan menunjuk ke node selanjutnya pada list.


Deklarasi dan node baru DLLNC

Deklarasi node
Dibuat dari struct berikut ini :
typedef struct TNode {
int data ;
TNode *next ;
Tnode * prev ;
};

Pembentukan node baru
Digunakan keyword new yang berarti mempersiapkan sebuah node baru berserta alokasi memorinya .
TNode * baru ;
baru = new TNode ;
baru ->data = databaru ;
baru ->next = NULL;

baru -> prev = NULL; 

Berikut saya lampirkan satu contohnya:
#include <iostream>
using namespace std;

template <class T>
struct Node
{
  T data;
  Node * next;
  Node(T data) : data(data), next(NULL) {}
};

template <class T>
class CircularLinkedList
{
public:
  CircularLinkedList() : head(NULL) {}
  ~CircularLinkedList();
  void addNode(T data);
  void deleteNode(T data);
  template <class U>
  friend std::ostream & operator<<(std::ostream & os, const CircularLinkedList<U> & cll);
private:
  Node<T> * head;
};

template <class T>
CircularLinkedList<T>::~CircularLinkedList()
{
  if (head)
    {
      Node<T> * tmp = head;
      while (tmp->next != head)
        {
          Node<T> * t = tmp;
          tmp = tmp->next;
          delete(t);
        }
      delete tmp;
      head = NULL;
    }
}

template <class T>
void CircularLinkedList<T>::addNode(T data)
{
  Node<T> * t = new Node<T>(data);

  if (head == NULL)
    {
      t->next = t;
      head = t;
      return;
    }

  Node<T> * tmp = head;
  while (tmp->next !=  head)
    {
      tmp = tmp->next;
    }

  tmp->next = t;
  t->next = head;
}

template <class T>
void CircularLinkedList<T>::deleteNode(T data)
{
  Node<T> * tmp = head;
  Node<T> * prev = NULL;
  while (tmp->next !=  head)
    {
      if (tmp->data == data) break;
      prev = tmp;
      tmp = tmp->next;
    }

  if (tmp == head)
    {
      while (tmp->next != head)
        {
          tmp = tmp->next;
        }
      tmp->next = head->next;
      delete head;
      head = tmp->next;
    }
  else
    {
      prev->next = tmp->next;
      delete tmp;
    }
}

template <class U>
std::ostream & operator<<(std::ostream & os, const CircularLinkedList<U> & cll)
{
  Node<U> * head = cll.head;
  if (head)
    {
      Node<U> * tmp = head;
      while (tmp->next != head)
        {
          os << tmp->data << " ";
          tmp = tmp->next;
        }
      os << tmp->data;
    }
  return os;
}

int main()
{
  CircularLinkedList<int> cll;

  cll.addNode(1);
  cll.addNode(2);
  cll.addNode(3);
  cll.addNode(4);
  cll.addNode(5);

  cout << cll << endl;

  cll.deleteNode(3);
  cll.deleteNode(1);
  cll.deleteNode(5);

RECORD C++

            Record adalah himpunan dari elemen-elemen yang heterogen. Heterogen adalah elemen-elemennya dapat mempunyai tipe data yang berbeda.
Beberapa hal yang perlu diketahui dalam record sebgai berikut:
1.           ELEMENTARY ITEM adalah suatu field yang tidak mempunyai subfield.
2.           GROUP ITEM adalah suatu field yang mempunyai subfield.
3.           TUPEL adalah gabungan atribut yang menjadi suatu informasi dari proses                       basis data. Contonya:
PEGAWAI
Job Tittle
Emp. No
Pay Rate
Name
Telp. No
Analys
00012724
1.000.000
Bob Geldof
7801725
Programmer
00023451
   800.000
Ceu Rika
7521475
( String(20) )
( String(8) )
( Real(9,2) )
( String(25) )
( String(7) )

Record-record yang tipenya sama : FILE.
            Untuk menyatakan suatu data dalam record yang mempunyai identifikasi yang khusus, maka harus punya 1 field khusus yang disebut KEY (kunci field).
DEKLARASI RECORD DALAM BAHASA PEMROGRAMAN PROGRAM DALAM PASCAL
      Type
            Pegawai = Record;
                                          Job_Tittle : String[20];
                                          Emp_No  : String[8];
                                          Pay_Rate : Real;
                                          Name       : String[25];
                                          Telp_No   : String[7];

                                   End;

Contoh programnya:

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

#include <string.h>

#define maks 3

struct TMhs

{

      char NIM[9];

      char Nama[21];

      int NilaiUTS,NilaiUAS,NilaiQuis;

      float NilaiAkhir;

      char index;

};

main()

{

   TMhs mhs[maks]; // array struct

   int i;

   for(i=0;i<maks;i++)

   {

       printf(“Pengisian Data Mahasiswa Ke-%i\n”,i+1);

       printf(“NIM        : “);fflush(stdin);gets(mhs[i].NIM);

       printf(“NAMA       : “);fflush(stdin);gets(mhs[i].Nama);

       printf(“Nilai QUIZ : “);scanf(“%d”,&mhs[i].NilaiQuis);

       printf(“Nilai UTS  : “);scanf(“%d”,&mhs[i].NilaiUTS);

       printf(“Nilai UTAS : “);scanf(“%d”,&mhs[i].NilaiUAS);

       mhs[i].NilaiAkhir=0.2*mhs[i].NilaiQuis+0.3*mhs[i].NilaiUTS+0.5*mhs[i].NilaiUAS;

       if(mhs[i].NilaiAkhir>=80) mhs[i].index=’A’;else

       if(mhs[i].NilaiAkhir>=60) mhs[i].index=’B’;else

       if(mhs[i].NilaiAkhir>=40) mhs[i].index=’C’;else

       if(mhs[i].NilaiAkhir>=20) mhs[i].index=’D’;else

       if(mhs[i].NilaiAkhir>=0)  mhs[i].index=’E’;

   };

   system("clr");

   printf(“Data yang telah dimasukan adalah : \n”);

   printf(“———————————————————————-\n”);

   printf(“|    NIM     |       NAMA         | QUIS | UTS | UAS |  N A  | INDEX |\n”);

   printf(“———————————————————————-\n”);

   for(i=0;i<maks;i++)

   {

      printf(“| %-8s | %-20s |  %3i | %3i | %3i | %6.2f |   %c   |\n”,

              mhs[i].NIM,mhs[i].Nama,mhs[i].NilaiQuis,mhs[i].NilaiUTS,

              mhs[i].NilaiUAS,mhs[i].NilaiAkhir,mhs[i].index);

   }

   printf(“———————————————————————-\n”);

   getch();

   return 0;

}


Semoga bermamfaat>>
SALAM SUKSES

spesifikasi Sony Xperia Z5 Premium

Sony punya tiga varian Xperia Z5 tahun ini. Di antara ketiganya, Xperia Z5 Premium jadi seri tertinggi dengan banderol harga mencapai Rp12 juta. Smartphone yang punya layar berdimensi 5,5 inci ini menawarkan resolusi layar 4K dengan kerapatan layar 806 ppi. Praktis, Xperia Z5 Premium adalah smartphone dengan resolusi layar tertinggi di dunia di tahun 2015.

Kelebihan

Premium, sesuai namanya. Sony merancang Xperia Z5 dan Z5 Compact dengan material frosted glass, terlihat keren dan low-profile. Sedangkan Xperia Z5 Premium 180 derajat berbeda. Bagian belakangnya “bling-bling”, mengkilat dan bisa digunakan untuk bercermin dengan pilihan warna emas dan perak. Rangka bodinya sendiri terbuat dari aluminium.
Tidak sepanas Xperia Z3+. Sony Xperia Z5 Premium dapat menyentuh suhu di atas 40 derajat Celcius dengan mudah jika diajak bermain game berat di atas 15 menit. Namun jika dibandingkan Xperia Z3+, suhu milik Z5 Premium lebih bersahabat. Sering memotret menggunakan kamera utamanya juga tak membuatnya sepanas Xperia Z3
Dual-speaker stereo. Apapun konten multimedia yang Anda nikmati, musik, film, maupun game bakal tersaji dengan optimal pada Xperia Z5 Premium. Kenyamanan didapat berkat adanya dua buah speaker tersembunyi yang ada di sisi atas dan bawah smartphone. Menggunakannya dalam kondisi landscape akan menghantarkan langsung suara ke kedua telinga Anda. Suara yang dihasilkan pun jernih.
Kamera 23 MP. Tidak tanggung-tanggung, Sony Xperia Z5 Premium membawa kamera utama 23 MP. Memotret di berbagai kondisi, outdoor dan indoor, siang maupun malam, rata-rata dapat dilakukan dengan menyenangkan. Autofokusnya bekerja dengan cepat, namun agak lama saat menyimpan gamb

Dengan adanya tombol shutter khas Sony, memotret memang terasa lebih mudah. Memotret dengan tombol shutter juga berfungsi mengurangi potensi noise pada foto. Memotret dengan cahaya melimpah, hasilnya sangat tajam. Sementara memotret di malam hari, hasilnya tidak buruk. Hanya saja, kamera Xperia Z5 Premium tidak bisa diajak memotret macro atau bokeh.
Layar jernih. Memandang layar Sony Xperia Z5 Premium sangat nyaman. Bukan karena resolusinya yang 4K, melainkan karena panel IPS dengan karakter permukaan layar yang glossy. Selain jernih, layar Xperia Z5 Premium juga menyajikan warna yang “berani”.
Merekam seperti kamera pro. Kamera 23 MP tersebut juga sangat unggul dalam hal merekam video. Merekam video 1.080p mendukung bitrate 60 fps, sedangkan video 4k mendukung bitrate 30 fps. Hasil rekamannya sangat smooth. Perpindahan fokus objek dapat dilakukan dengan sangat baik, sama sekali tak seperti kamera smartphone. Bisa kami pastikan, kemampuan merekam Xperia Z5 Premium adalah yang terbaik di antara smartphone Android lainnya.

Kekurangan

Paket penjualan sederhana. Untuk sebuah smartphone flagship seharga Rp12 juta, Xperia Z5 Premium tidak disertai packaging dan paket penjualan yang wah. Kotak penjualannya sederhana, begitu pun isinya. Earphone yang disertakan adalah versi biasa, seperti earphone dengan harga hanya Rp100 ribuan.
Resolusi 4K yang mubazir. Resolusi native pada Xperia Z5 hanya full HD, bukan 4K. Resolusi tersebut baru akan berubah menjadi 4K secara otomatis ketika Anda memutar film atau video beresolusi 4K. Tapi yang jelas, menikmati resolusi 4K di ukuran layar yang hanya 5,5 inci tak akan begitu terasa atau bahkan tak berbeda dibanding resolusi full HD.
Sensor fingerprint kurang akurat. Kami sudah mencoba beragam smartphone dengan sensor fingerprint, seperti Apple iPhone 6, Samsung Galaxy S6, Coolpad Shine, atau ZTE Blade A711. Pada Xperia Z5 series termasuk Z5 Premium, sensor fingerprint-nya tak seakurat smartphone yang kami sebutkan barusan. Dimensi tombol (sensor) serta posisi yang ada di sisi samping mungkin jadi penyebabnya.

Kesimpulan

Sony Xperia Z5 Premium bak rajanya smartphone. Bentuknya besar dan kokoh serta dapat mencuri perhatian berkat efek “bling-bling” yang dipancarkannya. Layarnya dapat memanjakan mata, meski resolusi 4K yang ditawarkan terasa tidak berguna. Smartphone ini juga sangat pas untuk Anda penggemar foto dan videografi.

Spesifikasi lengkapnya adalah sebagai berikut