Single Linked List 2

8
Praktikum Pemrograman Bahasa C 1 PENDAHULUAN LINKED LIST 1. Buatlah flowchart untuk menghapus simpul awal. 2. Buatlah flowchart untuk menghapus simpul akhir. 3. Buatlah flowchart untuk menghapus simpul tertentu 1 )

Transcript of Single Linked List 2

Page 1: Single Linked List 2

Praktikum Pemrograman Bahasa C

1

PENDAHULUAN

LINKED LIST

1. Buatlah flowchart untuk menghapus simpul awal. 2. Buatlah flowchart untuk menghapus simpul akhir. 3. Buatlah flowchart untuk menghapus simpul tertentu 1 )

Page 2: Single Linked List 2

Praktikum Pemrograman Bahasa C

2

2)

Page 3: Single Linked List 2

Praktikum Pemrograman Bahasa C

3

3)

Page 4: Single Linked List 2

Praktikum Pemrograman Bahasa C

4

SINGLE LINKED LIST II

3.1 Tujuan Setelah melakukan pratikum ini siswa diharapkan mengerti

1. Membuat pemrograman yang terstruktur pada program single linked list 2. Membuat prosedur atau fungsi sesuai tugasnya masing-masing pada program single linked list

3.2 Soal-soal tugas Pemrograman 1. Modifikasilah tugas program konversi system bilangan pada paraktikuk 2 pada bentuk modular 2. Modifikasilah tugas program menghitung nilai suatu polynomial pada paraktikum 2 menjadi bentuk

program modular

1 ) 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 cetak() { printf("\n"); printf(" PROGRAM PENGKONVERSI BILANGAN DESIMAL\n"); 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"); } void proses() { int a=1,b,sisa; char input[x],kata[x],output[x]; cetak(); 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;

Page 5: Single Linked List 2

Praktikum Pemrograman Bahasa C

5

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"); 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;

Page 6: Single Linked List 2

Praktikum Pemrograman Bahasa C

6

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; a++; } } void main() { proses(); }

Preview :

Page 7: Single Linked List 2

Praktikum Pemrograman Bahasa C

7

2 ) 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 proses() { 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; 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)

Page 8: Single Linked List 2

Praktikum Pemrograman Bahasa C

8

{ 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); } void main() { proses(); }

Preview :