[ Linked List Step by Step(2) ]

Pada artikel sebelumnya telah kita bahas dan pelajari tentang Linked List dan bagaimana penggunaannya. Serta bagaimana menambahkan node baru pada posisi depan. Pada artikel kali ini penulis ingin membahas penggunaan linked list lebih lanjut, yaitu bagaimana menambahkan node baru di posisi belakang.
Penambahan di belakang sedikit lebih sulit daripada penambahan linked list di depan, karena kita membutuhkan pointer lain untuk mengetahui posisi node paling belakang. Dalam hal ini penulis menggunakan pointer dengan nama bantu. Setelah mengetahui posisi paling belakang node, selanjutnya bisa dihubungkan dengan node baru.

Berikut ini adalah fungsi untuk menambahkan node baru dari belakang.

void tambahBelakang() {
	myLinkedList *baru, *bantu;
	baru = new myLinkedList;
	cout <> baru->data;
	baru->next = NULL;
	if (paKosong() == 1) {
		head = baru;
		head->next = NULL;
	} else {
		bantu = head;
		while (bantu->next != NULL) {
			bantu = bantu->next;
		}
		bantu->next = baru;
	}
}

Program di bawah ini adalah program yang sebelumnya dengan sedikit modifikasi. Bagian yang ditandai dengan huruf tebal adalah source code baru.

/**
 * ===========================================================================
 * listing2
 * @author Eding Muh. Saprudin
 * source : Handout Struktur Data Prodi TI UKDW/Antonius Rachmat C, S.Kom
 * ===========================================================================
 */
#include 
#include 

/* membuat linked list */
typedef struct myLinkedList {
	char nim[10];
	char nama[35];
	int nilai;

	myLinkedList *next;
};

myLinkedList *head;

/* keadaan awal */
void init() {
	head = NULL;
}

/* fungsi untuk mengecek linked list
 * apakah kosong atau tidak
 * jika kosong maka bernilai 1
 * jika tidak kosong maka bernilai 0
 */
int paKosong() {
	if (head == NULL) return 1;
	else return 0;
}

/**
  * fungsi untuk menambahkan data dari depan node 
  */
void tambahDepan() {
	clrscr();
	
	myLinkedList *baru;
	baru = new myLinkedList;
	
	cout << "Masukkan Data lengkap di bawah ini : " << endl;
	cout <> baru->nim;
	cout <> baru->nama;
	cout <> baru->nilai;
	
	baru->next = NULL;

	if (paKosong() == 1) {
		head = baru;
		head->next = NULL;
	} else {
		baru->next = head;
		head = baru;
	}
}

/**
 * fungsu untuk menambahkan data dari depan node
 */
void tambahBelakang() {
		clrscr();
	
	myLinkedList *baru, *bantu;
	baru = new myLinkedList;
	
	cout << "Masukkan Data lengkap di bawah ini : " << endl;
	cout <> baru->nim;
	cout <> baru->nama;
	cout <> baru->nilai;
	
	baru->next = NULL;
	
	if (paKosong() == 1) {
		head = baru;
		head->next = NULL;
	} else {
		bantu = head;
		while (bantu->next != NULL) {
			bantu = bantu->next;
		}
		bantu->next = baru;
	}
}


/**
  * fungsi untuk menampilkan data linked list
  */
void tampilData() {
	int no = 1;
	clrscr();
	myLinkedList *bantu;
	bantu = head;
	if (paKosong() == 0) {
		while (bantu != NULL) {
			cout << "No.   : " << no << endl;
			cout << "NIM   : " <nim << endl;
			cout << "Nama  : " <nama << endl;
			cout << "Nilai : " <nilai << endl <next;
		}
		cout << endl;
	} else {
		cout << "Data masih kosong " << endl;
	}
   	cout << "Tekan Enter untuk kembali ke menu!";
	getch();
}

/**
 * fungsi Menu, Untuk menentukan linked list mana
 * yang dipilih
 */
int menu() {
	int pilihan;

	clrscr();
	cout << "+----------------------+n";
	cout << "|     MENU PILIHAN     |n";
	cout << "+----------------------+n";
	cout << "| 1. Tambah Depan      |n";
cout << "| 2. Tambah Belakang   |n";
	cout << "| 5. TampilData        |n";
	cout << "| 6. Keluar            |n";
	cout << "+----------------------+n";
	cout << "| PILIHAN ANDA ? [ ]   |n";
	cout <> pilihan;
	return pilihan;
}
/**
  * fungsi operasi data
  */
void operasiData() {
		int pilih;

	do {
		pilih = menu();
		clrscr();
		switch (pilih) {
			case 1 :
				tambahDepan();
				break;
			case 2 :
				tambahBelakang();
				break;
			case 5 :
				tampilData();
				break;
			case 6:
				clrscr();
				cout << "Terima kasih coy!!!";
				break;
		}
	} while (pilih != 6);	
}

/**
 * PROGRAM UTAMA
 */
void main() {
	init();
	operasiData();	
}

download file

5 Komentar »

  1. ane Said:

    apaan yah…selak mules,mumet..memmmm….
    tugase mana sih? kpk pake muter2 dulu..?

  2. ane Said:

    oh…itu to soalnya…. hmmm,gitu doang..(he3x)

  3. ane Said:

    kerjain…enggak? kerjain dong…

  4. kangarie Said:

    commentnya ntar aja di posting selanjutnya😀

  5. Persi-F Said:

    next time aja


{ RSS feed for comments on this post} · { TrackBack URI }

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: