Saturday 15 April 2017

Tugas Struktur Data Bagian 4

Pointer Dan Linked List
  1. Jelaskan istilah Pointer dan Link dalam Linked list?
  2. Bagaimana kunjungan (Traversal) terhadap suatu link list?
  3. Buatlah suatu skema Linked-List yang menggambarkan 10 buah abjad terurut, Sajikan skema tersebut ke penyajian dalam memori.
  4. Lakukan penghapusan dua elemen dari soal No.3 di atas, yaitu elemen pertama dan elemen kelima.
  5. Lakukan penambahan elemen di urutan elemen pertama dan ketujuh dari soal No.4 di atas (jadi tidak urut).
  6. Ubah pointer-pointer linknya sehingga data soal No.5 di atas menjadi terurut kembali.
  7. Apa yang dimaksud dengan header linked list dan apa saja jenisnya?
  8. Buat program dengan bahasa pemrograman C++ untuk membuat Mesin linked list yang bisa dilakukan untuk menyisip dan memhapus elemen data.
Jawab

1. Pointer adalah built-in type di C dan C++, dimana C++ mengambil konsep pointer dari C. Pointer sebenarnya sangat terkait dengan “Abstract C Machine”, yaitu model mesin abstrak dimana program C bekerja.
- Linked List adalah struktur data yang ukurannya dinamis, sedangkan Array adalah struktur data yang ukurannya statis(ukuran Array harus ditentukan). Pada Linked List tidak hanya terdapat data yang ingin kita simpan, tapi juga pointer untuk ke elemen selanjutnya.


2. Kunjungan Traversal terhadap suatu link list yaitu dengan operasi kunjungan terhadap node-node dalam pohon dimana masing-masing node akan dikunjungi sekali.

3. 

4. 

5. 


6. 

7. Header linked list merupakan header spesial yang terdiri dari node headernya. Jadi, linked list jenis ini tidak menunjuk pada node pertama (head) namun hanya menyimpan alamat dari node headernya.

8. Program Lingked List

#include <stdio.h>
#include <stdlib.h>

struct NODE {
 int number;
 struct NODE *next;
};

void append_node(struct NODE *llist, int num);
int  search_value(struct NODE *llist, int num);
void display_list(struct NODE *llist);


int main(void) {
 int num = 0;
 int input = 5;
 int retval = 0;
 struct NODE *llist;

 llist = (struct NODE *)malloc(sizeof(struct NODE));
 llist->number = 0;
 llist->next = NULL;

while(input != 0) {
  printf("\n===== Pilih Menu =====\n");
  printf("0: Keluar\n");
  printf("1: Insert\n");
  printf("2: Search\n");
  printf("3: Tampilkan\n");
  printf("\nPilihan: ");scanf("%d", &input);

if(input==0){
    printf("...Terimakasih...\n");
}
else if(input==1){
    printf("Anda Memilih: 'Insert'\n");
    printf("Masukkan Nilai Yang Akan di Insert: ");
    scanf("%d", &num);
    append_node(llist, num);
}
else if(input==2){
    printf("Anda Memilih: 'Search'\n");
    printf("Masukkan Nilai Yang Akan di Cari (Search): ");
    scanf("%d", &num);
    if((retval = search_value(llist, num)) == -1)
        printf("Value `%d' not found\n", num);
    else
        printf("Value `%d' located at position `%d'\n", num, retval);
}
else if(input==3){
    printf("Anda Memilih: 'Tampilkan'\n");
    display_list(llist);
}}

 free(llist);
 return(0);
}

void append_node(struct NODE *llist, int num) {
 while(llist->next != NULL)
  llist = llist->next;

 llist->next = (struct NODE *)malloc(sizeof(struct NODE));
 llist->next->number = num;
 llist->next->next = NULL;
}

int search_value(struct NODE *llist, int num) {
 int retval = -1;
 int i = 1;

 while(llist->next != NULL) {
  if(llist->next->number == num)
   return i;
  else
   i++;

  llist = llist->next;
 }

 return retval;
}

void display_list(struct NODE *llist) {
 while(llist->next != NULL) {
  printf("%d ", llist->number);
  llist = llist->next;
 }

 printf("%d", llist->number);
}

Tampilan Output




No comments:

Post a Comment