Blogger Templates

Wednesday, 5 December 2012

Linked List (insert,delete,search and display)



Salam semua...kali ni Ain nak kongsi dgn u all tentang Linked list (senarai terpaut)? Pada siapa yang biasa dengan Struktur Data mungkin biasa dengan linked list ni kan..So, tak nak berceloteh banyak lagi jom kita belajar linked list ok... :) . Ni tugasan ketiga Ain. Hopefully dapat membantu anda supaya lebih faham tentang link list ok..

 Apa itu Linked list? 

Link list merupakan satu struktur data yang berangkaian atau dengan kata lain ia mempunyai daftar rekod dari jenis yang sama. Kalau anda semua nak pandai dalam linked list ni anda semua kena faham tentang konsep pointer dulu ok. Sebabnya linked list dan pointer tidak dapat dipisahkan. Pointer digunakan untuk tunjuk kepada data. Dengan adanya pointer maka mudahlah untuk kita point ke mana satu data yang kita nak cari, nak delete ke..dan lain-lain lagi...

Kalau nak lebih faham lg..bawah ni contoh macam mana nak

 insert data.



yang ni pulak cane nak delete data di depan senarai


Delete di tengah senarai





Bawah ni ada contoh linked list yang dah siap..u all boleh lah run n tengak cne hasilnya ok... :)



/*DISEDIAKAN OLEH SITI AINSHAH BINTI ISMAIL

 *D20112052132
 *PROGRAM AT47
 *TUGASAN 2
 *VERSION 2.2
 *KUMPULAN B
*/



#include<iostream.h>
#include<string.h>
#include<sstream.h>

using namespace std;

// ini adalah struktur node dalam list
// struktur ini ada 2 item
//item 1 : data berjenis int
//item 2 : pointer bernama next

struct node        //Nama struct node
{
           
string nopekerja;  //Elemen bagi struct
node *ptrnext; 
string nama;
float gaji;

};

void insert();    //fungsi masukan data
void display();   //fungsi paparan
void search();    //fungsi cari data
void display();   //

node *head;  //ini adalah untuk declare headptr

int main()
{
head = NULL;  //ini untuk initialize list adalah empty

int i,n,size;
string mystr;
int data;


cout<<"SYARIKAT TELEKOM MALAYSIA "<<endl;   //paparan untuk pilihan pengguna
cout<<endl<<endl;    
cout<<"Press 1 to Insert data "<<endl;
cout<<"Press 2 to Search data "<<endl;
cout<<"Press 3 to Delete data "<<endl;
cout<<"Press 4 to Display data"<<endl;

cout<<endl;
cout<<endl;

do                                       //gelung do..while untuk beri laksanakan pilihan untuk
                                         //beberapa kali hingga masukan 0, gelung akan berhenti
{
cout<<"Please enter menu : ";
cin>>data;
cin.ignore();
cout<<endl;
cout<<endl;

if(data==1)                              //gelung akan dilaksanakan mengikut pilihan pengguna
{
insert();
}
else if(data==2)
{
search();
}
else if(data==3)
{
remove();
}
else if(data==4)
{
display();
}
else
{
cout<<"Please enter valid menu. Thank you";
}

}while(data!= NULL);                     //gelung tamat jika nilai yang dimasukkan pengguna ialah 0 atau NULL
}

/* Function ini untuk memasukkan data ke dalam list*/

void insert()
{
// cipta node baru
node *newptr;
node *cur , *prev;
cur = head;
prev = NULL;
string mystr;

newptr = new node;

//assign value untk node
cout<<"Enter customer name   : ";
getline(cin,newptr->nama);
cout<<"Enter staff number    : ";
getline(cin,newptr->nopekerja);
cout<<"Enter customer salary : RM ";
getline(cin,mystr);
stringstream(mystr)>>newptr->gaji;

newptr->ptrnext = NULL;

//link dengan head
// first kalau senarai ksong
if (head == NULL)
{
head = newptr ; //head akan point ke newptr
}
else // ini untuk insert di depan, di tengah dan di belakang
{
//gerakkan cur dan prev pointer
while(cur!= NULL && newptr->nopekerja > cur->nopekerja)
{
prev = cur;
cur = cur->ptrnext;
}
// insert depan
if (prev == NULL)
{
newptr->ptrnext = head;
head = newptr;

}

else //insert di tengah atau belakang
{

newptr->ptrnext = cur;
prev->ptrnext = newptr;
}

}
}

void search()                       //fungsi search() untuk cari data
{
node *newptr;                       //create node baru
node *cur;
node *prev;
string nama1;
cur = head;                         //point cur kepada head

cout<<"      Search Data        "<<endl;   //arahan meminta user masukkan nama data ysng dicari
cout<<"_________________________";
cout<<endl;
cout<<"Please enter name : ";
getline(cin,nama1);
cout<<endl<<endl;
while(cur != NULL && nama1 != cur->nama)   //uji jika cur tak kosong & nama1 tak sama dengan nama
{
cur = cur->ptrnext;                        //cur sama dengan cur->ptrnext/cur pergi sebelah
}

if(cur == NULL)                            //jika data tak dijumpai, arahan dikeluarkan
cout<<"Sorry, Data not found . "<<endl;
else

cout<<"Here is your record . "<<endl;      //jika data ada, maklumat dipaparkan
cout<<endl;
cout<<"Name          :     "<< cur->nama  <<endl;
cout<<"Staff Number  :     "<< cur->nopekerja    <<endl;
cout<<"Salary        :     "<< cur->gaji <<endl;
cout<<endl<<endl;
}


void remove()                             //fungsi remove() untuk delete data
{
string mystr;                          
node *newptr;                             //create node baru
node *cur;
node *prev;
string STAFF_NO;                               //pengisytiharan pembolehubah IC_NO jenis long

cout<<"      Remove Data        "<<endl;  //arahan meminta user masukkan no ic yang nak dibuang
cout<<"_________________________";
cout<<endl;
cout<<"Please enter Staff Number : ";
getline(cin,STAFF_NO);
cout<<STAFF_NO;
cout<<endl<<endl;

prev = NULL;                               //memberi nilai awal kepada prev iaitu kosong
cur  = head;                               //point cur kepada head
cout<<cur->nopekerja;
if(head == NULL)                           //jika head kosong
cout<<"Sorry, Data not found.";            //data tak dijumpai
else
{
while(cur != NULL && STAFF_NO != cur->nopekerja)     //jika cur bukan NULL dan IC_NO tak sama dengan IC
{
prev = cur;                                //point prev kepada cur
cur = cur->ptrnext;                        //cur berpindah ke sebelah
}
if(prev == NULL)                           //jika prev NULL
{
head = head->ptrnext;                      //point head kepada head->ptrnext
delete cur ;                               //delete data
}

else if (cur == NULL)                      //jika cur NULL/data tak dijumpai
{
cout<<"Sorry, Data not in list. Please enter valid staff number";  //arahan dipapatkan
}

else
{
prev->ptrnext = cur->ptrnext;          
delete cur;
}
}
}


//funciton ini adalah untuk display elemen adlam list
void display()
{
node *cur;
cur = head ;

cout<<"####################################################################"<<endl;

cout<<"Staff Number"<<"\t\t"<<"Name"<<"\t\t"<<"Salary"<<"\t\t"<<endl;
cout<<"---------------------------------------------------------------------"<<endl<<endl;

while(cur != NULL)  //selagi current tidak null, loop ini akan print value
{
cout<<cur->nopekerja<<"\t\t\t"<<cur->nama<<"\t\t"<<cur->gaji<<endl;
cur = cur->ptrnext;
}
}



Saturday, 24 November 2012

Asas C++


Salam semua, 
Selamat datang ke laman pengaturcaraan. Post kali ni berkaitan dengan pengaturcaraan iaitu C++. C++ adalah bahasa pemrograman komputer yang di buat oleh (Bjarne Stroustrup) merupakan perkembangan dari bahasa C dikembangkan di Bell Labs (Dennis Ritchie) pada awal tahun 1970-an.

Pembolehubah
Pembolehubah atau juga dikenali sebagai “variable” merupakan kaedah pemudahcara bagaimana sesuatu bahasa pengaturcaraan menerima, menghantar, memproses dan pelbagai operasi lagi terhadap sesuatu input. Ada pelbagai jenis data bagi pembolehubah:

Jenis Data dan penggunaannya - jenis data dalam huruf huruf kecil sahaja

1) char - Aksara  (A-Z)
2) int    - Nombor Bulat/integer  (10)
3) float - Nombor 2 titik perpuluhan     (1.20)
4) double - Nombor 3 titik perpuluhan (1.208
5) string  - Perkataan/Rentetan aksara seperti nama  (Siti Ainshah 46)

Sintak pembolehubah:
<jenis data> <nama pembolehubah>;
Contohnya:

int nombor_bulat;

char aksara;
string perkataan;
float nombor_perpuluhan,
Nama pembolehubah yang ditugaskan adalah bebas, tetapi tertakluk kepada syarat:
  • tiada senggang di antara perkataan
  • bukan merupakan kata simpanan dalam sistem (reserved words)
  • boleh terdiri daripada nombor dan aksara tetapi tidak boleh dimulai dengan nombor

Pemboleh ubah juga boleh ditetapkan nilai sewaktu penciptaannya.
int nombor=1;
char aksara= ‘A’;
string kata= “ahmad”;
double perpuluhan=1.92;
Menerima dan memaparkan input
Di dalam C++ anda boleh memaparkan input ke paparan terminal atau ke dalam fail teks. Untuk permulaan, kita akan fokuskan dulu kepada paparan terminal. Jenis paparan dan mod paparan input antaranya ialah:

1) cin>>data;                                           //menerima output
2) cout<<"Data anda ialah"<<data;        //memaparkan output
3) cerr<<"memaparkan ralat";                //papar ralat

Contoh program asas pengaturcaraan C++
Contoh masukan nombor integer:
#include <iostream>
using namespace std;
void main()
{
int num;
cout<< “Sila masukkan sebarang nombor”<<endl;
cin>>num;
cout<< “Terima kasih, nombor yang anda masukkan ialah” <<num<<endl;
}


Contoh masukan rentetan aksara:
#include <iostream>
using namespace std;
void main()
{
string nama;
cout<< “Sila masukkan nama anda”<<endl;
getline(cin,nama);
cout<< “Terima kasih, nama anda ialah” <<nama<<endl;
}
Contoh pengunaan penggunaan komen:
#include <iostream>
using namespace std;
//Ini contoh untuk komen sebaris
//Baris baru memerlukan anda meletakkan tanda “backslash” seterusnya
int main()
{
int num;
cout<< “Sila masukkan sebarang nombor”<<endl;
cin>>num;
/* Ini pula
membenarkan komen lebih dari
sebaris
*/
cout<< “Terima kasih, nombor yang anda masukkan ialah” <<num<<endl;
return 0;
}

Contoh penggunaan pelbagai simbol khas:
#include <iostream>
#define NOMBOR 11
using namespace std;
int main()
{
int num=7;
char aksara= ‘B’;
cout<< “Nilai NOMBOR "<<" ialah ” <<NOMBOR<<endl;
cout<< “Nilai num ialah” <<num<<endl;
cout<< “Nilai aksara ialah” <<aksara<<endl;
return 0;
}
Siti Ainshah@2012