Anda di halaman 1dari 10

Praktikum Pemrograman Bahasa C

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)

Praktikum Pemrograman Bahasa C

3)

4)

Praktikum Pemrograman Bahasa C

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;

3. Jika kondisi sama dengan nol ujung->next=NULL;

4. tampung=ujung;

Praktikum Pemrograman Bahasa C

5. Selama ujung tidak sama dengan NULL, maka looping terus sampai NULL. ujung=ujung->next;

Program 2 1. Struct dtnilai *awal;struct dtnilai *ujung;

2. Deklarasi variable yang digunakan, jika j sama dengan nol maka tampung=awal; tampung->next=NULL;

3. Jika j tidak sama dengan nol, maka tampung->next=ujung; ujung->next=NULL; tampung=ujung;

4. Selama ujung tidak sama dengan NULL, maka ujung=ujung->next

Praktikum Pemrograman Bahasa C

Program 3 1. Struct dtnilai *awal;

2. tanda=awal->next; free(awal); awal=tanda;

3. tanda2=awal; tanda=tanda2->next;

4. Selama tanda tidak sama dengan NULL, maka bila tanda->next!=NULL tanda2->next=tanda->next; free(tanda);

5. Jika tidak, maka tanda2->next=NULL; free(tanda);

Selama ujung tidak sama dengan NULL ujung=ujung->next;

Program 4

Praktikum Pemrograman Bahasa C

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

Praktikum Pemrograman Bahasa C

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

Praktikum Pemrograman Bahasa C

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

Praktikum Pemrograman Bahasa C

} 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

Praktikum Pemrograman Bahasa C

} 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

Anda mungkin juga menyukai