Tuesday, October 9, 2012

Single Linked List Non Circular example (Continue)

#include <iostream>
  #include <stdlib.h>
  using namespace std;
struct Data {
  int nilai;
  Data *next;
  };
  Data *head;
void awal(){
  head=NULL;
  }
  bool isEmpty(){
  if (head==NULL)
  return true;
  return false;
  }
  void tambahDataDepan(int dataBaru) {
  Data *baru;
  baru=(Data*) malloc(sizeof(Data));
  baru->nilai=dataBaru;
  baru->next=baru;
  if (isEmpty()){
  head=baru;
  head->next=head;
  } else {
  Data *bantu;
  bantu=head;
  while (bantu->next!=head){
  bantu=bantu->next;
  }
  baru->next=head;
  head=baru;
  bantu->next=head;
  }
  }
  void tambahDataBelakang(int dataBaru){
  Data *baru;
  baru=(Data*) malloc(sizeof(Data));
  baru->nilai=dataBaru;
  baru->next=baru;
  if (isEmpty()){
  head=baru;
  head->next=head;
  } else {
  Data *bantu;
  bantu=head;
  while (bantu->next!=head){
  bantu=bantu->next;
  }
  bantu->next=baru;
  baru->next=head;
  //head=baru;
  //bantu->next=baru;
  }
  }
  void hapusDepan(){
  if(!isEmpty()){
  int tmp;
  if(head->next!=head){
  Data *hapus;
  hapus=head;
  tmp=head->nilai;
  Data *bantu;
  bantu=head;
  while (bantu->next!=head){
  bantu=bantu->next;
  }
  bantu->next=head->next;
  head=head->next;
  delete hapus;
  }
  else {
  tmp=head->nilai;
  awal();
  }
  cout<<tmp<<" dihapus"<<endl;
  } else {
  cout<<"Data kosong\n";
  }
  }
  void hapusBelakang(){
  Data *hapus,*bantu;
  int tmp;
  if (!isEmpty()){
  hapus=head;
  if (head->next==head)
  {
  tmp=head->nilai;
  head=NULL;
  }
  else {
  bantu=head;
  while (bantu->next->next!=head){
  bantu=bantu->next;
  }
  hapus=bantu->next;
  bantu->next=head;
  tmp=hapus->nilai;
  delete hapus;
  }
  cout<<tmp<<" dihapus"<<endl;
  } else cout<<"data kosong\n";
}
  void cetak(){
  if (!isEmpty()){
  Data *bantu;
  bantu=head;
  do {
  cout<<bantu->nilai<<" ";
  bantu=bantu->next;
  } while(bantu!=head);
  cout<<endl;
  }
  }
  int panjang(){
  int count=0;
  if(!isEmpty())
  {
  count=1;
  Data *bantu;
  bantu=head;
  if(bantu->next==head)
  {
  count=1;
  }
  else
  {
  do
  {
  count++;
  bantu=bantu->next;
  }while(bantu->next!=head);
  }
  }
  else
  {
  count=0;
  }
  return count;
  }
  void swapElement(Data *a, Data *b){
  Data *tmp;
  tmp=a;
  a=b;
  b=tmp;
  }
  int main(){
  awal();
  tambahDataBelakang(5);
  tambahDataDepan(7);
  tambahDataBelakang(17);
  tambahDataBelakang(1);
  tambahDataBelakang(27);
  tambahDataBelakang(10);
  hapusDepan();
  hapusBelakang();
  cetak();
  swapElement(head, head->next);
  cetak();
  cout<<endl<<panjang();
  return 0;
  }


Tugas: SLLC Insertion sort


(kelompok)
1. Buatlah penyisipan node setelah atau sebelum data tertentu.
2. Proses sorting dengan metode insertion sort menggunakan SLLC

data masuk 6

6

data masuk 7

6 7

data masuk 10

6 7 10

data masuk 2

2 6 7 10

data masuk 8

2 6 7 8 10  (menyisipkan)

Sunday, October 7, 2012

Frustasi: Komen bloggger hilang (belum ketemu obatnya)

Sudah 1 minggu ini obrak-abrik setingan blog karena tanpa disadari komen di blog ini hilang, sudah mencari solusi di beberapa blog yang menawarkan solusi dan sudah hampir semua cara dicoba tetapi hasilnya nihil.
Sampai sekarng pun walupun sudah ganti template tetap aja belum nongol kotak komentarnya. Duh... siapa yang bisa bantu ini...?? tolong yang punya solusi kirim email ke didikunila[at]yahoo.com
Ini ngetik sambil berharap ketika di publish komentar di blog ini nongol kembali.....

Friday, October 5, 2012

J2ME: Program Agen Pulsa 0.0.1 (#1)

import javax.microedition.midlet.*;
  import javax.microedition.lcdui.*;
  /**
  * @author Didik Kurniawan
  * Jurusan Ilmu Komputer FMIPA Universitas Lampung
  */
  public class AgenPulsa extends MIDlet implements CommandListener{
  List namaOperator;
  List telkomsel, indosat,xl,three;
  Display display;
  Command ok =new Command("OK",Command.OK,0);
  Command exit =new Command("Exit",Command.EXIT,0);
  Command kembali =new Command("Back",Command.BACK,0);
  Command kirim = new Command("Kirim",Command.OK,0);
  Form form=new Form("No Tujuan");
  TextField noTujuan=new TextField(null,null,32,TextField.PHONENUMBER);
  public AgenPulsa(){
  namaOperator=new List("Operator",List.IMPLICIT);
  namaOperator.append("Telkomsel", null);
  namaOperator.append("Indosat", null);
  namaOperator.append("XL", null);
  namaOperator.append("Three", null);
  namaOperator.addCommand(ok);
  namaOperator.addCommand(exit);
  namaOperator.setCommandListener(this);
  
  telkomsel=new List("Telkomsel",List.IMPLICIT);
  telkomsel.append("5K",null);
  telkomsel.append("10K",null);
  telkomsel.append("20K",null);
  telkomsel.append("25K",null);
  telkomsel.append("50K",null);
  telkomsel.append("100K",null);
  telkomsel.addCommand(ok);
  telkomsel.addCommand(exit);
  telkomsel.addCommand(kembali);
  telkomsel.setCommandListener(this);
  
  indosat=new List("Indosat",List.IMPLICIT);
  indosat.append("2K",null);
  indosat.append("5K",null);
  indosat.append("10K",null);
  indosat.append("25K",null);
  indosat.append("50K",null);
  indosat.append("100K",null);
  indosat.addCommand(ok);
  indosat.addCommand(exit);
  indosat.addCommand(kembali);
  indosat.setCommandListener(this);
  
  xl=new List("XL",List.IMPLICIT);
  xl.append("1K",null);
  xl.append("5K",null);
  xl.append("10K",null);
  xl.append("25K",null);
  xl.append("50K",null);
  xl.append("100K",null);
  xl.addCommand(ok);
  xl.addCommand(exit);
  xl.addCommand(kembali);
  xl.setCommandListener(this);
  
  three=new List("Three",List.IMPLICIT);
  three.append("1K",null);
  three.append("2K",null);
  three.append("3K",null);
  three.append("4K",null);
  three.append("5K",null);
  three.append("10K",null);
  three.append("20K",null);
  three.append("30K",null);
  three.append("50K",null);
  three.append("100K",null);
  three.addCommand(ok);
  three.addCommand(exit);
  three.addCommand(kembali);
  three.setCommandListener(this);
  
  form.append("Isi Pulsa");
  form.append(noTujuan);
  form.addCommand(ok);
  form.addCommand(kembali);
  form.addCommand(kirim);
  form.addCommand(exit);
  form.setCommandListener(this);
  
  }
  public void startApp() {
  if (display==null){
  display=Display.getDisplay(this);
  display.setCurrent(namaOperator);
  }
  }
  
  public void pauseApp() {
  }
  
  public void destroyApp(boolean unconditional) {
  }
  public void commandAction(Command c, Displayable d ){
  if (c==exit) {
  destroyApp(true);
  notifyDestroyed();
  } 
  else if(c==ok && d==namaOperator){
  if (namaOperator.getSelectedIndex()==0) {
  display.setCurrent(telkomsel);
  } 
  else if (namaOperator.getSelectedIndex()==1){
  display.setCurrent(indosat);
  }
  else if (namaOperator.getSelectedIndex()==2){
  display.setCurrent(xl);
  }
  else if (namaOperator.getSelectedIndex()==3){
  display.setCurrent(three);
  }
  } 
  else if(c==kembali && (d==telkomsel || d==indosat || d==xl || d==three)){
  display.setCurrent(namaOperator);
  }
  else if(c==kembali && d==form){
  display.setCurrent(namaOperator);
  }
  else if (c==ok && (d==telkomsel || d==indosat || d==xl || d==three)){
  display.setCurrent(form); 
  }
  
  }
  }

Thursday, October 4, 2012

Struktur Data: Single Linked List Non Circular (Final Version) Example

/*
@author: Didik Kurniawan
**** Ilmu Komputer FMIPA Universitas Lampung *****
*/
#include <iostream>
  #include <stdlib.h>
  #include <string.h>
  using namespace std;
  struct produk {
  int kode;
  char nama_produk[100];
  produk *next;
  };
  produk *head;
void awal(){
  head=NULL;
  }
bool isEmpty(){
  if (head==NULL)
  return true;
  return false;
  }
  void tambahDataDepan(int kode, char nama_produk[100]){
  produk *baru;
  baru= (produk*) malloc (sizeof(produk));
  baru->kode=kode;
  strcpy(baru->nama_produk,nama_produk);
  baru->next=NULL;
  if (isEmpty()){
  head=baru;
  } else {
  baru->next=head;
  head=baru;
  }
  }
  void tambahDataBelakang(int kode, char nama_produk[100]){
  produk *baru;
  produk *bantu;
  baru= (produk*) malloc (sizeof(produk));
  baru->kode=kode;
  strcpy(baru->nama_produk,nama_produk);
  baru->next=NULL;
 if (isEmpty()){
  head=baru;
  } else {
  bantu=head;
  while(bantu->next!=NULL){
  bantu=bantu->next;
  }
  bantu->next=baru;
  }
}
  void hapusDepan(){
  if (!isEmpty()){
  produk *hapus;
  hapus=head;
  if (head->next!=NULL){
  head=head->next;
  delete hapus;
  } else {
  head=NULL;
  }
  } else {
  cout<<"Data masih kosong";
  }
  }
  void hapusBelakang(){
  if (!isEmpty()){
  produk *hapus;
  if (head->next!=NULL){
  produk *bantu;
  while(bantu->next->next!=NULL){
  bantu=bantu->next;
  }
  hapus=bantu->next;
  bantu->next=NULL;
  delete hapus;
  } else {
  head=NULL;
  }
  } else {
  cout<<"Data masih kosong";
  }
  }
void cetak(){
  if (!isEmpty()){
  produk *bantu;
  bantu=head;
  while(bantu!=NULL){
  cout<<bantu->kode<<"\t"<<bantu->nama_produk<<"\n";
  bantu=bantu->next;
  }
  } else{
  cout<<"Data masih kosong";
  }
  }
  int main(){
  awal();
 tambahDataDepan(1,"Netbook Asus eeepc 1215");
  tambahDataBelakang(2,"Netbook Asus eeepc 1210");
  tambahDataDepan(3,"Netbook Asus eeepc 1010");
  tambahDataBelakang(4,"Printer Canon Pixma MP 258");
  hapusBelakang();
  hapusDepan();
  cetak();
  return 0;
  }

Tuesday, October 2, 2012

Sytruktur Data: SIngle Linked List Circular

  #include <iostream>
  #include <stdlib.h>
  using namespace std;
struct Data {
  int nilai;
  Data *next;
  };
  Data *head;
void awal(){
  head=NULL;
  }
  bool isEmpty(){
  if (head==NULL)
  return true;
  return false;
  }
  void tambahDataDepan(int dataBaru) {
  Data *baru;
  baru=(Data*) malloc(sizeof(Data));
  baru->nilai=dataBaru;
  baru->next=baru;
  if (isEmpty()){
  head=baru;
  head->next=head;
  } else {
  Data *bantu;
  bantu=head;
  while (bantu->next!=head){
  bantu=bantu->next;
  }
  baru->next=head;
  head=baru;
  bantu->next=head;
  }
  }
  void tambahDataBelakang(int dataBaru){
  Data *baru;
  baru=(Data*) malloc(sizeof(Data));
  baru->nilai=dataBaru;
  baru->next=baru;
  if (isEmpty()){
  head=baru;
  head->next=head;
  } else {
  Data *bantu;
  bantu=head;
  while (bantu->next!=head){
  bantu=bantu->next;
  }
  bantu->next=baru;
  baru->next=head;
  //head=baru;
  //bantu->next=baru;
  }
  }
  void hapusDepan(){
  if(!isEmpty()){
  if(head->next!=head){
  Data *hapus;
  hapus=head;
  Data *bantu;
  bantu=head;
  while (bantu->next!=head){
  bantu=bantu->next;
  }
  bantu->next=head->next;
  head=head->next;
  delete hapus;
  }
  else {
  awal();
  }
  }
  }
  void hapusBelakang(){/* 
  tambah kode program di sini.... 
*/
}
  void cetak(){
  if (!isEmpty()){
  Data *bantu;
  bantu=head;
  do {
  cout<<bantu->nilai<<" ";
  bantu=bantu->next;
  } while(bantu!=head);
 }
  }
  int main(){
  awal();
  tambahDataBelakang(5);
  tambahDataDepan(7);
  tambahDataBelakang(17);
  hapusDepan();
  hapusDepan();
  cetak();
  return 0;
  }


Monday, October 1, 2012

Tugas Struktur Data SLLNC

tugas Struktur Data
Sub pokok bahasan: Single linked non circular

Pada pertemuan terakhir sudah dibahas konsep linked list non circular untuk penambahan data dari depan. Dengan konsep ini setiap data yang masuk akan berada diposisi depan dari data sebelumnya dan data terakhir yang masuk akan menjadi head dr linked list.
Tugas anda sekarang memodifikasi linked list sebelumnya sehingga data yang baru masuk selalu menjadi data diposisi terakhir, Anda boleh menggunakan variabel baru untuk mengidentifikasi data terakhir (misal: tail) atau cukup dengan variabel bantu untuk mencari elemen terakhir dari linked list (untuk SLLNC node terakhir memiliki nilai null untuk element pointer next) lalu arahkan elemen next ke data baru. Program yang dibuat jg harus dapat menampilkan isi linked list.

skema prosesnya sbb:

1. data msh kosong

null

2. masuk data 10
-------
| 10 |: --> null
-------

3. masuk data 20
-------         -------
| 10 |  --> | 20  | --> null
-------         -------
4. dan seterusnya

1. Tugas kelompok (max 3 org tdk boleh 1)

2. Dokumen tugas:
- file cpp program c++ untuk menyelesaikan masalah.
- file ppt berupa penjelasan proses pd program

3. file dicetak dan file dikirim ke email: didikunila@gmail.com dengan subject: Tugas Struktur SLLNC

4. Deadline tugas hari Selasa 2 Okt 2012 pkl 11:30