Jelajahi eBook
Kategori
Jelajahi Buku audio
Kategori
Jelajahi Majalah
Kategori
Jelajahi Dokumen
Kategori
PENDAHULUAN LINKED LIST 1. Buatlah flowchart untuk menyisipkan simpul sebagai simpul awal. 2. Buatlah flowchart untuk menyisipkan simpul sebagai simpul akhir. 3. Buatlah flowchart untuk menyisipkan simpul setelah simpul tertentu 4. Buatlah flowchart untuk menyisipkan simpul sebelum simpul tertentu
1)
2)
3)
4)
SINGLE LINKED LIST 2.1 Tujuan Setelah melakukan pratikum ini siswa diharapkan mengerti 1. Cara lain untuk mempresentasikan sekumpulan data menggunakan single linked list 2. Anggota / elemen struktur dari sebuah single linked list 3. Cara penggunaan single linked list dibandingkan dengan representasi sequential menggunakan array 4. Penelusuran simpul / pembacaan single linked list : LIFO ( Last In First Out ) dan FIFO ( First In First Out ) 5. Operasi dasar pada single linked list : memasukkan data, menghapus data, menyisipkan data pada suatu simpul. 2.4 Soal-soal Tugas Pemrograman 1. Untuk sebuah contoh program 1, 2, 3, dan 4 buatlah gambar urutan proses dari sebuah single linked list, dengan ketentuan : Anggota struktur digambarkan pada 1 persegi panjang Variable pointer digambarkan dengan tanda panah Untuk setiap proses yang berbeda gambarkan dengan gambar yang lain, misalnya : memasukkan data pada simpul yang I, memasukkan data pada simpul yang II dan seterusnya. 2. Buatlah program menggunakan single linked list dengan pembacaan LIFO untuk mendapatkan bilangan hasil konversi dari Decimal ke Biner Decimal ke Oktal Decimal ke Hexa Anggota struktur tiap node adalah bilangan sisa hasil bagi, dan next node 3. Sebuah polynomial derajat n disimpan dengan menggunakan single linked list dengan ketentuan : tiap node beranggotakan koefisien, pangkat, dan next, node dengan pangkat tertinggi paling dekat dengan head/awal dari list. Perhatikan contoh : P = 10x3 + 25x 3 P 10 3 25 1 -3 0
Buatlah program untuk mengevaluasi nilai dari P(x), dimana nilai x dimasukkan 2.5 Penyelesaian soal 1) Program 1 1. Struct dtnilai *tamping;struct dtnilai *ujung
2. Jika kondisi pointer untuk data II dan seterusnya tidak sama dengan nol, maka ujung->next=tampung;
4. tampung=ujung;
5. Selama ujung tidak sama dengan NULL, maka looping terus sampai NULL. ujung=ujung->next;
2. Deklarasi variable yang digunakan, jika j sama dengan nol maka tampung=awal; tampung->next=NULL;
3. tanda2=awal; tanda=tanda2->next;
4. Selama tanda tidak sama dengan NULL, maka bila tanda->next!=NULL tanda2->next=tanda->next; free(tanda);
Program 4
2 ) Source code : #include<stdio.h> #include<string.h> #include<stdlib.h> #define x 100 struct list { int desimal,desimal2,desimal3,desimal4,biner,oktal; char hexa[x]; struct list *next; }*first,*sementara; void main() { int a=1,b,sisa; char input[x],kata[x],output[x]; printf("\n"); printf(" PROGRAM PENGKONVERSI BILANGAN DESIMAL\n"); 6
printf(" =====================================\n\n"); printf(" Program akan secara otomatis mengkonversi ke dalam :\n"); printf(" 1. Bilangan Biner\n"); printf(" 2. Bilangan Oktal\n"); printf(" 3. Bilangan Hexa\n"); printf("\n Masukkan bilangan desimal\n"); while(1) { first=(struct list*)malloc(sizeof(struct list)); if(a==1) first->next=NULL; else first->next=sementara; sementara=first; printf(" Bilangan Desimal ke-%d = ",a); gets(input); first->desimal=first->desimal2=first->desimal3=first->desimal4=atoi(input); a++; printf(" Tambah lagi? <y/t> "); gets(input); if(strcmp(input,"y")==0) continue; else if(strcmp(input,"t")==0) break; } system("cls"); a=1; printf("\n Bilangan Desimal\n"); while(1) { printf(" Desimal[%d] = %d\n",a,sementara->desimal); if(sementara->next==NULL) break; sementara=sementara->next; a++; } a=1; sementara=first; printf("\n Bilangan Biner\n"); while(1) { sementara->biner=0; b=1; sisa=sementara->desimal2; while(sementara->desimal2!=0) { sisa=sementara->desimal2%2; if(sementara->desimal2==1) sisa=1; sementara->biner+=(sisa*b); b*=10; sementara->desimal2/=2; } printf(" Bilangan Biner ke-%d = %d\n",a,sementara->biner); if(sementara->next==NULL) break; sementara=sementara->next; a++; } a=1; sementara=first; printf("\n Bilangan Oktal\n"); 7
while(1) { sementara->oktal=0; b=1; sisa=sementara->desimal3; while(sementara->desimal3!=0) { sisa=sementara->desimal3%8; if(sementara->desimal3==1) sisa=1; sementara->oktal+=(sisa*b); b*=10; sementara->desimal3/=8; } printf(" Bilangan Oktal ke-%d = %d\n",a,sementara->oktal); if(sementara->next==NULL) break; sementara=sementara->next; a++; } a=1; sementara=first; printf("\n Bilangan Hexa\n"); while(1) { sementara->hexa[0]=NULL; sementara->biner=0; b=1; sisa=sementara->desimal4; while((sementara->desimal4!=0)||(sementara->desimal4==0)) { sisa=sementara->desimal4%16; if(sisa==0) strncpy(output,"0",b); else if(sisa==10) strncpy(output,"A",b); else if(sisa==11) strncpy(output,"B",b); else if(sisa==12) strncpy(output,"C",b); else if(sisa==13) strncpy(output,"D",b); else if(sisa==14) strncpy(output,"E",b); else if(sisa==15) strncpy(output,"F",b); else { itoa(sisa,kata,10); strncpy(output,kata,b); } output[b]=NULL; strcat(sementara->hexa,output); sementara->desimal4/=16; b++; if(sementara->desimal4==0) break; } strrev(sementara->hexa); printf(" Bilangan Hexa ke-%d = %s\n",a,sementara->hexa); if(sementara->next==NULL) break; sementara=sementara->next; 8
} Preview :
a++;
3 ) Source code : #include<math.h> #include<stdio.h> #include<string.h> #include<stdlib.h> struct list { int koefisien,pangkat; struct list *next; }*first,*temp,*view; void main() { int a=0,jumlah=0,pangkat2; char input[5]; printf("\n Masukkan sebuah f(x)\n"); while(1) { first=(struct list*)malloc(sizeof(struct list)); if(a==0) first->next=NULL; else first->next=temp; temp=first; printf(" Pangkat %d = ",a); gets(input); first->koefisien=atoi(input); first->pangkat=a; a++; printf(" Lagi? <y/t> "); gets(input); if(strcmp(input,"y")==0) continue; else if(strcmp(input,"t")==0) break; } system("cls"); view=first; 9
} Preview :
printf("\n f(x) = "); while(1) { printf("%dx%d ",view->koefisien,view->pangkat); if(view->next==NULL) break; if(temp->koefisien<0) printf("- "); else printf("+ "); view=view->next; } printf("\n Masukkan nilai x = "); gets(input); while(1) { pangkat2=1; for(a=1;a<=first->pangkat;a++) pangkat2*=atoi(input); printf("%d",pangkat2); jumlah+=(first->koefisien*pangkat2); printf("[%d]\n",jumlah); if(first->next==NULL) break; first=first->next; } printf(" %d\n",jumlah);
10