Tampilkan postingan dengan label kode. Tampilkan semua postingan
Tampilkan postingan dengan label kode. Tampilkan semua postingan

Minggu, 03 Juni 2018

Program Linked List C++ Data Mahasiswa Penambahan & Hapus Awal, Tengah, dan Akhir


Oke dikesempatan kali ini saya akan membagikan program yang saya buat. Program ini juga merupkan program dari tugas dosen saya. Program yang satu ini merupakan program linked list tepatnya Double Linked list untuk menyimpan dan menampilkan data mahasiswa. Di program ini user dapat menghapus dan menambah di bagian tengah, awal, dan, akhir urutan. Data mahasiswa di program ini meliputi nama, nim, dan juga asal. Oke silahkan lihat programnya di bawah.


#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
using namespace std;
int pil;
void pilih();
void buat_baru();
void tambah_depan();
void tambah_tengah();
void tambah_belakang();
void hapus_tengah();
void hapus_belakang();
void hapus_depan();
void tampil();
struct node{
char nama[20];
int nim;
char asal[30];
node *prev, *next;
};
node *baru, *head=NULL, *tail=NULL,*hapus,*bantu,*bantu2;
int main(){
do{
system("cls");
cout<<"INPUT DATA MAHASISWA "<<endl;
cout<<"=========================\n";
cout<<"1. Penambahan Depan"<<endl;
cout<<"2. Penambahan Tengah"<<endl;
cout<<"3. Penambahan Belakang"<<endl;
cout<<"4. Hapus Depan"<<endl;
cout<<"5. Hapus tengah"<<endl;
cout<<"6. Hapus Belakang"<<endl;
cout<<"7. Tampilkan"<<endl;
cout<<"8. Keluar"<<endl;
cout<<"Pilihan : ";cin>>pil;
pilih();
}
while(pil!=8);
}
void pilih(){
if(pil==1)
tambah_depan();
else if(pil==2)
tambah_tengah();
else if(pil==3)
tambah_belakang();
else if(pil==4)
hapus_depan();
else if(pil==5)
hapus_tengah();
else if(pil==6)
hapus_belakang();
else if(pil==7)
tampil();
else
cout<<"selesai";
}
void buat_baru(){
baru =new(node);
cout<<"Nama \t: ";cin>>baru->nama;
cout<<"Nim \t: ";cin>>baru->nim;
cout<<"Asal \t: ";cin>>baru->asal;
baru->prev=NULL;
baru->next=NULL;
}
void tambah_belakang()
{
buat_baru();
if(head==NULL)
{
head=baru;
tail=baru;
}
else
{
tail->next=baru;
baru->prev=tail;
tail=baru;
}
cout<<endl<<endl;
tampil();
}
void tambah_depan(){
buat_baru();
if(head==NULL){
head=baru;
tail=baru;
}else{
baru->next=head;
head->prev=baru;
head=baru;
}
cout<<endl<<endl;
tampil();
}
void hapus_depan() {
if (head==NULL)
cout<<"Kosong";
else if(head->next==NULL){
hapus=head;
head=NULL;
tail=NULL;
delete hapus;
}else {
hapus=head;
head=hapus->next;
head->prev=NULL;
delete hapus;
}
cout<<endl<<endl;
tampil();
}
void hapus_belakang()
{
if (head==NULL)
cout<<"Kosong";
else if (head->next==NULL)
{
hapus=head;
head=NULL;
tail=NULL;
delete hapus;
}
else
{
hapus=tail;
tail=hapus->prev;
tail->next=NULL;
delete hapus;
}
cout<<endl<<endl;
tampil();
}
void tambah_tengah(){
int posisi_sisip;
if(head!=NULL){
cout<<"akan disisipkan diposisi data ke- : ";cin>>posisi_sisip;
baru=new node;
baru->next=NULL;
baru->prev=NULL;
bantu=head;
for(int i=1;i<posisi_sisip-1;i++)
{bantu=bantu->next;}

buat_baru();
bantu2= bantu->next;
baru->next=bantu2;
bantu2->prev=baru;
bantu->next=baru;
baru->prev=bantu;
}
else{
cout<<"belum ada data"<<endl;
}
cout<<endl;
tampil();
}
void hapus_tengah()
{
int sisip;
cout<<"Masukan Posisi Sisip yg anda ingin hapus Anda : ";cin>>sisip;
bantu=head;

for(int i=1;i<sisip-1;i++)
{
bantu=bantu->next;
}
hapus=bantu->next;
bantu2=hapus->next;
bantu->next=hapus->next;
bantu2->prev=bantu;
delete hapus;
cout<<endl;
tampil();

}
void tampil(){
if (head==NULL)
cout<<"Kosong\n";
else {
bantu=head;
cout<<" No \t | Nama \t | NIM \t | Asal\t\t |"<<endl;
int no=0;
while(bantu!=NULL){
no++;
// cout<<" Nama \t: "<<bantu->nama<<"\t | ";
// cout<<" NIM \t: "<<bantu->nim<<"\t | ";
//cout<<" Asal \t: "<<bantu->asal<<"\t | "<<endl;
cout<<" "<<no<<"\t | ";
cout<<" "<<bantu->nama<<"\t | ";
cout<<" "<<bantu->nim<<"\t | ";
cout<<" "<<bantu->asal<<"\t | "<<endl;
bantu=bantu->next;
}
}system("pause");
}


Untuk Outputnya :


Oke itu merupakan program C++ dari saya. Lain kali saya akan membagikan program C++  lainnya. Jika ada yang ditanyakan silahkan komen dibawah.
Read more

Sabtu, 02 Juni 2018

Perbandingan Antara Bahasa C dan C++, Mana yang Lebih Baik ?

www.mudengtekno.com

Pada kesempatan kali ini saya akan membagikan apa yang saya ketahui tentang bahasa pemrograman c dan bahasa pemrograman c++. Untuk pemula atau yang tidak mengerti bahasa pemrograman pasti menganggap bahwa bahasa pemrograman C dan bahasa pemrograman C++ itu sama saja. Nah kali ini saya akan membagikan apa yang saya ketahui tentang bahasa C dan bahasa C++. Oke silahkan membaca sambil ngopi kalau bisa wkwk.

 
BAHASA PEMROGRAMAN C


Pertama saya akan menjelaskan dahulu tentang bahasa pemrograman C. Bahasa C merupakan salah satu dari sekian banyak bahasa pemrograman yang bisa dibuat untuk membuat berbagai aplikasi seperti sistem operasi dan compiler dalam bahasa pemrograman. Bahasa C juga bisa untuk membuat bahasa pemrograman lain seperti bahasa pemrograman PHP. Bahasa pemrograman C sendiri pada awalnya hanya digunakan untuk mengembangkan sistem operasi UNIX. Sebelumnya UNIX menggunakan bahasa pemrograman ASSEMBLY, karena bahasa assembly susah digunakan maka Richie membuat bahasa pemrograman C untuk menggantikan bahasa assembly yang susah digunakan. Dari itulah hingga saat ini UNIX banyak menjadi dasar dari suatu sistem operasi pada program misalnya sistem operasi pada LINUX hingga Android.

Bahasa pemrograman C juga merupakan induk dari bahasa pemrograma modern. Oleh karena itu dengan mempelajari bahasa c kita secara tidak langsung juga mempelajari bahasa pemrograman modern seperti java, C++ dan php. Karena c merupakan dasar dari bahasa pemrograman modern bahasa c menjadi bahasa pemrograman yang relatif cepat dalam mengeksekusinya walaupun dalam hal itu juga menjadi kelemahan dari bahasa pemrograman c dibandingkan dari bahasa pemrograman modern karena relatif sederhana dan tidak memiliki fitur fitur modern seperti garbage collection dan dynamic typing.

Di masa kini, walaupun bahasa c dianggap sudah kuno tapi ternyata masih banyak keuntungan kita dalam memperlajari bahasa c. Jika kita ingin menjadi progammer kita harus dan wajib mempelajari bahasa c sebagai dasar mempelajari algoritma. Karena sudah saya singgung tadi bahwa bahasa c merupakan dasar dari bahasa pemrograman modern walaupun bahasa c belum bisa membuat program yang sebenarnya yang menggunakan tampilan grafis, mouse, gambar dan lainnya. Dan yang pasti jika Anda berkuliah di jurusan Teknik Informatika pastinya anda akan diberikan mata kuliah tentang bahasa pemrohraman c diawal kuliah.


BAHASA PEMROGRAMAN C++

Oke sekarang saya akan membahas tentang bahasa C++. Bahasa C++ merupakan pengembangan dari bahasa C. Bahasa Pemrograman C++ sendiri dibuat oleh Bjarne Stroustrup yang mengembangkan bahasa Pemrograman C++ pada tahun 1980an. Pada bahasa pemrograman C++ ditambahkan konsep konsep baru seprti inheritance dan overloading dan salah satu hal mendasar yang menjadikan C++ berbeda dengan bahasa C adalah pada C++ mendukung konsep pemrograman berorientasi objek. Untuk menyelesaikan suatu permasalah, C++ melakukan langkah pertama dengan menjelaskan class-class yang merupakan anak class yang dibuat sebelumnya sebagai abstraksi dari object-object fisik. Class tersebut berisi keadaan object, anggota-anggotanya dan kemampuan dari objectnya, Setelah beberapa Class dibuat kemudian masalah dipecahkan dengan Class.
Bahasa Pemrograman C++ juga memiliki beberapa kelebihan daripada bahasa pemrograman C dan bahasa pemrograman lainnya, antara lain adalah:
  • Bahasa pemrograman C++ memiliki pertabilitas dan fleksibilitas yang tinggi untuk semua jenis komputer.
  • Merupakan bahasa Standart ANSI.
  • Kecepatan program lebih cepat dari pada bahasa lain.
  • Hampir tersedia di semua jenis komputer.
  • Hanya menyediakan sedikit kata kunci yaitu 48 kata kunci.
  • Mendukung pembuatan aplikasi makro.
  • C++ merupakan bahasa terstruktur sehingga lebih mendukung OOP.
  • Termasuk bahasa menengah dan lebih dekat dengan bahasa mesin.
  • C++ dapat membuat aplikasi grafik proccesor berkualitas tinggi.
Oke mungkin itu beberapa kelebihan yang dapat saya himpun dari bahasa pemrograman C++.

Kesimpulan yang saya dapatkan dari kedua bahasa ini adalah. Setiap bahasa mempunyai kelebihan tersendiri baik itu bahasa pemrograman C maupun bahasa pemrograman C++. Jika anda ingin mempelajari bahasa pemrograman lebih baik anda mempelajari bahasa pemrograman C terlebih dahulu karena bahasa pemrograman C merupakan jendela kita untuk mempelajari bahasa pemrograman lain. Setelah itu anda dapat mempelajari bahasa pemrograman C++ yang merupakan pengembangan dari bahasa C yang lebih kompleks daripada bahasa C. Dan untuk mana yang lebih baik itu tergantung dari posisi kita sejauh mana kita sudah mengenal bahasa pemrograman. Jika anda belum mengerti sama sekali tentang bahasa pemrograman maka bahasa C lebih baik dipelajari dan jika anda sudah mengerti tentang bahasa pemrograman maka bahasa C++ lebih baik karena bahasa C++ merupakan pengembangan dari bahasa C.

Read more

Rabu, 30 Mei 2018

Contoh Program Binary Tree Menampilkan Silsilah Keluarga ( Family Tree )


Kali ini saya akan membagikan Program Binary Tree Untuk menampilkan Data keluarga. Perlu diketahui sebelumnya binary tree adalah Struktur data yang secara bentuk menyerupai sebuah struktur pohon, dan terdiri dari serangkaian node (simpul) yang saling berhubungan, dimana node-node tersebut dihubungkan oleh sebuah vektor. Struktur pohon merupakan suatu cara merepresentasikan suatu hirarki (one-to-many) secara grafis yang mirip sebuah pohon, namun pohon tersebut tampak sebagai kumpulan node-node dari atas ke bawah. Suatu struktur data yang tidak linier yang menggambarkan hubungan yang hirarkis dan tidak linier antara elemen-elemennya. Oke contoh programnya bisa anda lihat dibawah.


  • SOURCE CODE

#include<stdio.h>
#include <iostream>
#include <windows.h>
using namespace std;
typedef struct node{
char data;
node *kiri;
node *kanan;
};
node *akar=NULL;
addNode(node **akar, char isi) {
if((*akar)==NULL){
node *baru;
baru= new node;
baru->data = isi;
baru->kiri = NULL;
baru->kanan = NULL;
(*akar)=baru;
}
}
preOrder(node *akar) {
if(akar !=NULL) {
printf("%c ", akar->data);
preOrder(akar->kiri);
preOrder(akar->kanan);
}
}
inOrder(node *akar) {
if(akar !=NULL) {
inOrder(akar->kiri);
printf("%c ", akar->data);
inOrder(akar->kanan);
}
}
postOrder(node *akar) {
if(akar !=NULL) {
postOrder(akar->kiri);
postOrder(akar->kanan);
printf("%c ", akar->data);
}
}
main(){
    system("color 2e");
char abjad;
cout<<"|+++++++++++++++++++++++++++++++++++++++++++++++++|\n";
cout<<"|PROGRAM BINARY TREE MENAMPILKAN SILSILAH KELUARGA|\n";
cout<<"|=================================================|\n";
cout<<"\n\n";
cout<<"|----------------------------------------------------|\n";
cout<<"|Keterangan Program : |\n";
cout<<"| NAMA KODE |\n";
cout<<"|----------------------------------------------------|\n";
cout<<"| HASIRAMA | A |\n";
cout<<"| LUFFY | Y |\n";
cout<<"| ROBIN | N |\n";
cout<<"| SANJI | I |\n";
cout<<"| NARUTO | O |\n";
cout<<"| SASUKE | E |\n";
cout<<"|====================================================|\n";
printf("\n\n\t POSISI AWAL TREE:\n\n");
printf("\t HASIRAMA\n\t / \\\n\t LUFFY ROBIN \n\t /\n\t SANJI\n\t / \\ \n\t NARUTO SASUKE \n\n");
addNode(&akar,abjad='HASIRAMA');
addNode(&akar->kiri,abjad='LUFFY');
addNode(&akar->kanan,abjad='ROBIN');
addNode(&akar->kiri->kiri,abjad='SANJI');
addNode(&akar->kiri->kiri->kiri,abjad='NARUTO');
addNode(&akar->kiri->kiri->kanan,abjad='SASUKE');
printf("Tampilan PreOrder : ");
preOrder(akar);
printf("\nTampilan PostOrder : ");
postOrder(akar);
printf("\nTampilan InOrder : ");
inOrder(akar);
}
  • OUTPUT PROGRAM

Pada gambar diatas merupakan contoh binary tree untuk menampilkan silsilah keluarga. Di dalam program diatas juga terdapat fungsi untuk menampilkan kode dari nama keluarga tersebut secara preorder, postorder, dan inorder.


referensi program
https://informatika11d.wordpress.com/2012/12/20/struktur-data-contoh-program-binary-tree-preorder-inorder-postorder/
Read more

Selasa, 29 Mei 2018

Program Queue Menampilkan Antrian Pesawat Dalam Bahasa C++


Oke kali ini saya akan membagikan salah satu contoh program Queue. Queue Sendiri merupakan suatu struktur data linier. Queue (Antrian) disebut juga“Waiting Line”, yaitu penambahan elemen baru dilakukan pada bagian belakang dan penghapusan elemen dilakukan pada bagian depan. Konsepnya hampir sama dengan Stack, perbedaannya adalah operasi penambahan dan penghapusan pada ujung yang bebeda. Oke dibawah ini merupakan contoh program Queue dalam penerapan antrian keberangkatan pesawat.

  • SOURCE CODE

#include<iostream>l
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<ctype.h>
#include <windows.h>

using namespace std;

struct Node{
int data;
Node *next;
};
Node *head, *tail;

void menu();
void LinkedList();
void penutup();
void inisialisasi();
void insertData();
void removeData();
void bersih();
void tampil();

int main(){
    system("color 5b");
char MENU;
int ulangMetode = 1;

do
{
printf("||= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =||\n");
printf("|| Program Antrian Keberangkatan Pesawat Konoha Airlines ||\n");
printf("||=======================================================================||\n");
cout<<"\n\n";
        cout<<" ||+++++++++++++++++++++++++++++++++++++++++||\n";
        cout<<" ||*** MENU UTAMA ***||\n";
cout<<" ||-----------------------------------------||\n";
        cout<<" || 1. Pendaftaran Pesawat Konoha Airlines ||\n";
        cout<<" || 2. Exit ||\n";
cout<<" ||+++++++++++++++++++++++++++++++++++++++++||\n";
cout<<endl;

printf("Masukkan Pilihan Anda ?: ");
MENU = getche();
printf("\n");
getch();
system("cls");

switch(MENU)
{
case '1' :
LinkedList();
break;
case '2' :
penutup();
break;
default :
{
puts("\nKode yang dimasukkan salah!\n");
puts("Press any key for back to the menu");
getch();
}
break;
}
}
while(ulangMetode == 1);
}

//menu dari metode
void menu()
{

cout<<"||+++++++++++++++++++++++++++++++++++++++++++||\n";
    cout<<"|| ***** PILIHAN MENU ***** ||\n";
cout<<"||-------------------------------------------||\n";
    cout<<"|| 1. Daftar Antrian Pesawat<KODE PESAWAT> ||\n";
    cout<<"|| 2. Keberangkatan ||\n";
    cout<<"|| 3. Lihat Daftar Antrian Pesawat ||\n";
    cout<<"|| 4. Memberangkatkan Semua Antrian ||\n";
    cout<<"|| 5. Exit ||\n";
cout<<"||+++++++++++++++++++++++++++++++++++++++++++||\n";
cout<<endl;
}

//metode linked list
void LinkedList()
{
char pilihMenu;
int ulang = 1;

do
{
menu();
printf("Input Menu : ");
pilihMenu = getche();
printf("\n");
switch(pilihMenu)
{
case '1' :
insertData();
break;
case '2' :
removeData();
break;
case '3' :
tampil();
break;
case '4' :
bersih();
break;
case '5' :
penutup();
break;
default :
{
puts("Input menu salah!\n");
puts("Press any key for back to the menu");
getch();
}
break;
}
}
while(ulang == 1);
}

/*fungsi insialisasi bahwa
head dan tail bernilai NULL*/

void inisialisasi()
{
head = NULL;
tail = NULL;
}

//fungsi untuk memasukkan data
void insertData()
{
int angka;
Node *nodeBaru;
nodeBaru = new Node;

cout<<"Masukkan Data : ";
cin>>angka;

nodeBaru->data = angka;
nodeBaru->next = NULL;

if(tail == NULL)
{
head = tail = nodeBaru;
tail->next = NULL;
}
else
{
tail->next = nodeBaru;
tail = nodeBaru;
}

printf("Data %i masuk!\n\n", angka);
puts("Press any key for back to the menu");
getch();
system("cls");
}

/*untuk hapus elemen belakang
      untuk metode LIFO*/

void removeData()
{
int elDel;
Node *del, *prevTail;
del = new Node;

if(tail != NULL)
{
del = tail;
elDel = del->data;

if(tail == head)
{
inisialisasi();
}
else
{
prevTail = head;

while(prevTail->next != tail)
prevTail = prevTail->next;

tail = prevTail;
tail->next = NULL;
}

delete del;

printf("Data %i Diberangkatkan!\n\n", elDel);
}
else
{
puts("Data Kosong! Tidak ada data yang dapat diberangkatkan!\n");
}

puts("Press any key for back to the menu");
getch();
system("cls");
}

//untuk hapus semua elemen
void bersih()
{
Node *clear, *point;

if(tail != NULL)
{
point = head;

while(point != NULL)
{
clear = point;
point = point->next;

delete clear;
}

inisialisasi();

puts("Semua Data Diberangkatkan!\n");
}
else
puts("Data Masih Kosong!\n");

puts("Press any key for back to the menu");
getch();
system("cls");
}

//untuk menampilkan list data
void tampil()
{
Node *see;

see = head;

if(tail != NULL)
{
puts("Daftar Data Antrian Pesawat Konoha Airlines :");
puts("");

while(see != NULL)
{
printf("%i ", see->data);
see = see->next;
}
puts("\n");
}
else
puts("Data masih dalam keadaan kosong!\n");

puts("Press any key for back to the menu");
getch();
system("cls");
}

//fungsi penutup / keluar
void penutup()
{
cout<<"\n\tPROGRAM EXIT"<<endl;
exit(0);
}
  • OUTPUT PROGRAM
1. Program pertama dijalankan dan menginput fungsi ( 1. Pendaftaran Pesawat Konoha Airlines )


2. Lalu akan ditampilkan pilihan menu. Jika kita memilih 1 maka program akan meminta untuk memasukan data ( kode pesawat ) 


3. Jika memilih fungsi 1 pada menu maka program akan memasukan antrian pesawat lagi.


4. Jika memilih fungsi 3 pada pilihan menu maka program akan menampilkan daftar data antrian pesawat.


5. Jika memilih fungsi 2 pada pilihan menu maka antrian akan diberangkatkan urut sesuai daftar antrian

6.  Jika memilih 4 pada Pilihan menu maka data antrian pesawat akan diberangkatkan bersama sama.


Itu merupakan program Queue untuk menampilkan data antrian & untuk memberangkatkan antrian pesawa konoha airline. 

referensi program: 
https://www.esokharinanti.com/2014/04/program-queue-linked-list-pada-antrian.html
Read more

Selasa, 01 Mei 2018

Pengertian, Jenis, Operasi, dan Contoh Program dalam Linked List


Linked List atau yang biasanya dikenal dengan sebutan senarai berantai merupakan struktur data yang terdiri dari urutan record data dimana setiap record memiliki field yang menyimpan alamat/referensi dari record selanjutnya (dalam urutan). Elemen data yang dihubungkan dengan link pada Linked List disebut Node. Biasanya didalam suatu linked list, terdapat istilah head dan tail. Head merupakan elemen yang berada pada posisi pertama dalam linked list. Sedangkan Tail merupakan elemen yang berada pada posisi terakhir dalam linked list.

Linked list terdapat beberapa jenis. Jenis jenis tersebut antara lain adalah single linked list, double linked list, circular linked list, dan multiple linked list.
  • Single Linked List
Single Linked List merupakan suatu linked list yang hanya memiliki satu variabel pointer saja. Dimana pointer tersebut menunjuk ke node selanjutnya. Dan biasanya  field pada tail simpul menunjuk ke NULL.

  • Double Linked List
Double Linked List merupakan suatu Linked list yang memiliki dua variabel pointer yaitu pointer yang menunjuk ke node selanjutnya dan pointer yang menunjuk ke node sebelumnya.Setiap Head dan tail juga menunjuk ke NULL.

  • Circular Linked List
Circular Linked List merupakan suatu linked list dimana tail menunjuk ke head. Jadi tidak ada pointer yang menunjuk ke NULL.

  • Multiple Linked List
Multiple Linked list merupakan suatu linked list yang mempunyai lebih dari 2 buah variable pointer.



Di dalam Linked list juga terdapat beberapa operasi didalamnya. Operasi operasi tersebut antara lain
  • Insert
Istilah Insert berarti menambahkan sebuah simpul baru ke dalam suatu linked list.
  • IsEmpty
Fungsi ini digunakan untuk menentukan apakah linked list kosong atau tidak.
  • Find First
Fungsi ini digunaka untuk mencari elemen pertama dari linked list
  • Find Next
Fungsi ini digunaka untuk mencari elemen sesudah elemen yang ditunjuk now
  • Retrieve
Fungsi ini merupakan fungsi untuk mengambil elemen yang ditunjuk oleh now. Elemen tersebut lalu dikembalikan oleh fungsi.
  • Update
Fungsi ini merupakan fungsi untuk mengubah elemen yang ditunjuk oleh now dengan isi dari sesuatu
  • Delete Now
Fungsi ini digunakan untuk menghapus elemen yang ditunjuk. Jika yang dihapus
adalah elemen pertama dari linked list atau head, head akan berpindah ke
elemen berikut.
  • Delete Head
Fungsi ini merupakan fungsi untuk menghapus elemen yang ditunjuk head. Head berpindah ke elemen sesudahnya.
  • Clear
Fungsi ini merupakan fungsi untuk menghapus linked list yang sudah ada. Fungsi ini wajib dilakukan
bila anda ingin mengakhiri program yang menggunakan linked list. Jika anda
melakukannya, data-data yang dialokasikan ke memori pada program
sebelumnya akan tetap tertinggal di dalam memori.

contoh algoritma dan program linked list.

  • Single Linked List
  • #include <iostream>

    using namespace std;

    struct Node{

    int data;

    Node* next;

    };

    //inisialisasi hanya untuk node pertama

    void initNode(struct Node *head,int n){

    head->data = n;

    head->next =NULL;

    }

    //fungsi menambahkan node

    void addNode(struct Node *head,int n){

    Node *newNode = new Node;

    newNode->data = n;

    newNode->next =NULL;

    Node *cur = head;

    while(cur){

    if(cur->next==NULL){

    cur->next= newNode;

    return;

    }

    cur = cur->next;

    }

    }

    //insert node dari depan

    void insertFront(struct Node **head, int n){

    Node *newNode = new Node;

    newNode->data = n;

    newNode->next =*head;

    *head = newNode;

    }

    struct Node *searchNode(struct Node *head,int n){

    Node *cur = head;

    while(cur){

    if(cur->data == n)return cur;

    cur = cur->next;

    }

    cout<<" Tidak ada Node "<< n <<" Pada list \n:";

    }

    bool deleteNode(struct Node **head,Node *ptrDel){

    Node *cur = *head;

    if(ptrDel== *head){

    *head = cur->next;

    delete ptrDel;

    return true;

    }

    while(cur){

    if(cur->next == ptrDel){

    cur->next = ptrDel->next;

    delete ptrDel;

    return true;

    }

    cur = cur->next;

    }

    return false;

    }

    void display(struct Node *head){

    Node *list =head;

    while(list){

    cout<< list->data<<" ";

    list = list->next;

    }

    cout<<"\n\n";

    }

    int main(){

    struct Node *newHead;

    struct Node *head = new Node;

    cout<<"LINKED LIST \n=========================\n\n";

    initNode(head,10);

    cout<<"Node Awal : ";

    display(head);

    addNode(head,20);

    cout<<"Tambah 20: ";

    display(head);

    addNode(head,30);

    cout<<"Tambah 30: ";

    display(head);

    addNode(head,35);

    cout<<"Tambah 35: ";

    display(head);

    addNode(head,40);

    cout<<"Tambah 40: ";

    display(head);

    insertFront(&head,5);

    cout<<"Insert depan 5: ";

    display(head);

    int numDel = 35;

    Node *ptrDelete = searchNode(head,numDel);

    if(deleteNode(&head,ptrDelete))

    cout<<"setelah Node "<< numDel<<" dihapus!\n";

    display(head);

    return 0;

    }

 setelah program dijalankan maka output yang keluar adalah


  • Double Linked List
  • #include <iostream>

    #include <conio.h>

    #include <stdio.h>

    #include <stdlib.h>

    using namespace std;

    int pil;

    void pilih();

    void buat_baru();

    void tambah_depan();

    void hapus_depan();

    void tampil();

    struct node{

    char nama[20];

    int nim;

    char asal[30];

    node *prev, *next;

    };

    node *baru, *head=NULL, *tail=NULL,*hapus,*bantu;

    int main(){

    do{

    system("CLS");

    cout<<"DOUBLE LINKEDLIST "<<endl;

    cout<<"=========================\n";

    cout<<"1. Penambahan Depan"<<endl;

    cout<<"2. Hapus Depan"<<endl;

    cout<<"3. Tampilkan"<<endl;

    cout<<"4. Keluar"<<endl;

    cout<<"Pilihan : ";cin>>pil;

    pilih();

    }

    while(pil!=4);

    }

    void pilih(){

    if(pil==1)

    tambah_depan();

    else if(pil==2)

    hapus_depan();

    else if(pil==3)

    tampil();

    else

    cout<<"selesai";

    }

    void buat_baru(){

    baru =new(node);

    cout<<"Nama \t: ";cin>>baru->nama;

    cout<<"Nim \t: ";cin>>baru->nim;

    cout<<"Asal \t: ";cin>>baru->asal;

    baru->prev=NULL;

    baru->next=NULL;

    }

    void tambah_depan(){

    buat_baru();

    if(head==NULL){

    head=baru;

    tail=baru;

    }else{

    baru->next=head;

    head->prev=baru;

    head=baru;

    }

    cout<<endl<<endl;

    tampil();

    }

    void hapus_depan() {

    if (head==NULL)

    cout<<"Kosong";

    else if(head->next==NULL){

    hapus=head;

    head=NULL;

    tail=NULL;

    delete hapus;

    }else {

    hapus=head;

    head=hapus->next;

    head->prev=NULL;

    delete hapus;

    }

    cout<<endl<<endl;

    tampil();

    }

    void tampil(){

    if (head==NULL)

    cout<<"Kosong";

    else {

    bantu=head;

    while(bantu!=NULL){

    cout<<" Nama \t: "<<bantu->nama<<" | ";

    cout<<" NIM \t: "<<bantu->nim<<" | ";

    cout<<" Asal \t: "<<bantu->asal<<" | "<<endl;

    bantu=bantu->next;

    }

    }

    getch();

    }

Setelah program dijalankan maka output yang akan muncul adalah


referensi:
http://suciantinovi.blogspot.co.id/2014/03/linked-list-i_14.html
http://vannyjw030911.blogspot.co.id/2013/04/operasi-didalam-linked-list.html
Wantoro, Jan, dan Sukirman.2017. Algoritma & Struktur Data dalam Bahasa C++. Surakarta:MUP.
Read more

Selasa, 06 Maret 2018

Soal Dan Jawaban Algoritma & Struktur Data dalam Bahasa C/C++





1.      Seorang programer yang baik harus mengetahui cara pembuatan program yang bagus. Berikan penjelasan tentang program yang bagus itu seperti apa!
Jawaban :

Sebuah program dapat dikatakan program yang bagus apabila program tersebut ketika dijalankan dapat dijalankan dengan benar, program mudah bicara dan dimengerti, program mudah didebug, dan program mudah dilakukan modifikasi. Selain itu, ketika dijalankan program harus menghasilkan out[ut yang benar serta berjanan dengan efisien.

2.       Struktur data merupakan suatu cara untuk menyimpan dan mengatur sebuah data supaya dapat digunakan secara efektif dan efisien. Sebutkan dan jelaskan jenis jenis struktur data secara umum!
Jawaban :

Secara umum struktur data dapat dikelompokkan menjadi dua jenis, yaitu struktur data sederhana ( primitive ) dan struktur data majemuk ( non-primitive ). Struktur data sederhana adalah tipe data dasar yang didukung oleh bahasa pemrograman, misalnya tipe integer, real, char, dan boolean. Sedangkan struktur data majemuk adalah struktur data yang dibuat menggunakan struktur data primitive. Contoh struktur data majemuk tersebut antara lain linked list, stack, tree, dan graph. Struktur data majemuk lebih lanjut dapat diklasifikasikan menjadi dua kategori, yaitu linier dan non linier.

3.       Jelaskan beberapa aplikasi perangkat lunak komputer yang menggunakan struktur data sebagai dasar pengembangannya.
Jawaban :

Penggunaan aplikasi perangkat lunak komputer yang menggunakan struktur data sebagai dasar pengembangannya sebagi contoh adalah dengan pengaplikasian struktur data sistem queue pada antrian printer job dalam sebuah jaringan. Queue  sendiri adalah barisan elemen yang apabila ditambah maka bertambah nya berada pada diposisi belakang  dan jika dilakukan pengambilan elemen dilakukan di elemen paling depan, oleh karena itu queue bersifat FIFO (first in first out).

Queue merupakan salah satu contoh aplikasi dari double linked list yang sering kita temui dalam kehidupan sehari-hari, misalnya saat kita melakukan print data pada printer dalam sebuah jaringan dimana terdapat banyak pengguna dalam suatu jaringan itu, maka akan di lakukan proses antrian data untuk proses print. Istilah yang sering dipakai, data masuk dalam sebuah antrian adalah enqueue. Dalam suatu antrian, yang datang terlebih dahulu akan dikerjakan lebih dahulu (first-in, first-out), maka dalam system print dalam job printer jaringan yang melakukan print terlebih dulu ,itulah yang akan dikerjakan oleh printer jaringan itu terlebih dulu.
Istilah yang sering dipakai bila data keluar dari antrian adalah dequeue.

4.       Abstract Data Tipe ( ADT ) merupakan cara untuk melihat struktur data, dengan fokus pada apa yang akan dilakukan dan mengabaikan proses yang terdapat didalamnya saat menjalankan eksekusi. Buatlah algoritma yang menganalogikan abstraksi perangkat elektronik.
Jawaban :

Algoritma cara menghidupkan komputer
1.       Colokan kabel ke stopkontak
2.       Tekan tombol ON ( stabilizer ), CPU, dan monitor
3.       Tunggu beberapa saat sampai komputer selesai booting
4.       Setelah booting selesai jika terdapat perintah “masukan password” isi dengan password yang pernah anda buat di komputer tersebut.
5.       Setelah selesai maka akan muncul layar dekstop dan komputer siap digunakan.

5.       Berikan penjelasan dan bandingkan beberapa pendekatan yang dapat digunakan untuk merancang sebuah algoritma.
Jawaban :

Terdapat dua pendekatan umum yang bisa digunakan untuk merancang sebuah algoritma, yaitu dengan pendekatan perancangan top-down dan juga pendekatan perancangan secara bottom-up. Pendekatan perancangan secara top-down merupakan perancangan yang dimulai dari desain abstrak, dan disain ini disempurnakan menjadi lebih kongkret disetiap langkah hingga tercapai suatu level yang tidak memerlukan perbaikan yang lebih lanjut. Sedangkan pendekatan perancangan secara bottom-up merupakan kebalikan dari pendekatan perancangan secara top-down, dimana dalam pendekatan ini dimulai dari modul paling dasar, kemudian dilanjutkan ke perancangan modul ke tingkat yang lebih tinggi. Modul yang mempunyai tingkat lebih tinggi diimplementasikan menggunakan modul yang mempunyai tingkat lebih rendah.

6.       Sebuah program dapat memiliki lebih dari satu algoritma. Rancang algoritma untuk program kalkulator yang dapat melakukan operasi penjumlahan dan pengurangan.
Jawaban :

1.       Mulai
2.       Definisi variabel angka1, angka2
3.       Definisi operator jumlah
4.       Masukan angka1
5.       Masukan angka2
6.       Tampilkan hasil jumlah
7.       Definis operator kurang
8.       Masukan angka1
9.       Masukan angka2
10.   Tampilkan hasil kurang
11.   End

7.       Ukurlah kompleksitas algoritma yang anda rancang menggunakan notasi Big O!
Jawaban:

i:=0;
while i<N do
begin
  i:=i+1;
  j:=0;
  while j<N do
  begin
     j:=j+1;
     k:=0;
     while k<N do
     begin
        k:=k+1;
        //statement;
     end;
  end;
end;

code diatas mempunyai kompleksitas O(N3) karena program diatas memiliki triple looping.

Daftar Pustaka:
http://thoat-thoat.blogspot.co.id/2012/03/program-c-untuk-hasil.html
http://gilang11018035.blogspot.co.id/2012/03/cara-menghidupkan-komputer-pasangkan.html
http://kurakuraprogrammer.blogspot.co.id/2010/08/big-o-notation-notasi-big-o.html
http://belajar-ilmu-informatik.blogspot.co.id/
http://aguzadytekaje.blogspot.co.id/2015/03/pengaplikasian-struktur-data-dengan.html
Sukirman, dan Wantoro, Jan. 2017. Algoritma & Struktur Data dalam Bahasa C/C++. Surakarta: Muhammadiyah University Press
Read more