Rabu, 14 Juni 2017

PRAKTIKUM_MODUL_10

MODUL X LINKED LIST

Praktikum

Studi Kasus 1

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

typedef struct nod
{
int data;
struct nod*next;
}NOD,*NODPTR;
void CiptaSenarai(NODPTR*s)
{
*s=NULL;
}
NODPTR NodBaru(int m)
{
NODPTR n;
n =(NODPTR) malloc(sizeof(NOD));
if(n!=NULL)n-> data=m;
n-> next=NULL;
}
return n;
}
void SisipSenarai(NODPTR *s, NODPTR t, NODPTR p)
{
if(p==NULL){
t -> next =*s;
*s =t;
}

else{
t->next=p->next;
p->next=t;
}
}
void CetakSenarai(NODPTR s)
{
NODPTR ps;
for(ps = s; ps!=NULL; ps=ps->next)
printf("%d -->", ps-> data);
printf("NULL\n");
}
int main()
{
NODPTR pel;
NODPTR n;
CiptaSenarai(&pel);
n=NodBaru(55);
SisipSenarai(&pel, n, NULL);
CetakSenarai(pel);
return 0;
}


Hasil Running :





Pembahasan :
            Dalam program linked list tersebut menggunakan struct untuk mengakses variablenya dan nod*next itu next nya berfungsi untuk menyimpan nilai selanjutnya dan merupakan sebuah variable pointer.



Studi Kasus 2


#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
typedef struct mahasiswa
{
int nim;
mahasiswa *next;
}*p;


void init(mahasiswa **p)
{
*p =NULL;
}
mahasiswa *alokasi(int nim)
{
mahasiswa *p;
p=(mahasiswa*)malloc(sizeof(mahasiswa));
if(p!=NULL)
{
p->next =NULL;
p->nim =nim;
}
return(p);
}

void add(mahasiswa **p, int nim)
{
*p= alokasi (nim);
printf("%d",(*p)->nim);
}

int main()
{
mahasiswa *head;
init(&head);
add(&head,56);
getch();
return 0;
}


Hasil Running :

  

Pembahasan :
            Dalam Program Linkedlist ini hampir sama dengan program sebelumnya, dalam program ini akan menampilkan sebuah NIM dari mahasiswa, sama seperti sebelumnya variable next ini bergunak untuk selanjutnya atau bisa di bilang nilai selanjutnya yang akan keluar.



Latihan

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
struct node{
int data;
struct node*p;};
void TambahElemen (struct node **d, struct node **b, int nilai){
/*membuat struktur node baru*/
struct node*temp;
temp=(struct node *)malloc (sizeof (struct node));

/*mendefinisikan field yang terdapat pada struktur node yang baru dialokasikan*/
temp->data=nilai;
temp->p=NULL;
if(*d== NULL){
*d= temp;
}else{
(*b)->p=temp;}
*b=temp;}
void HapusElemen (struct node **d, struct node **b){
struct node*temp;
if(*d == NULL){
printf("Tidak terdapat elemen dalam queue");
}else{
temp= *d;
*d= temp->p;
free(temp);
if(*d == NULL){
*b=NULL;
}
}
}
void TampilkanNilai(struct node *d){
int nilai;
while(d != NULL){
nilai = d->data;
printf("%d\n",nilai);
d=d->p;}
}
int main(void){
struct node*depan, *belakang;
depan = belakang =NULL;
TambahElemen(&depan,&belakang,10);
TambahElemen(&depan,&belakang,20);
TambahElemen(&depan,&belakang,30);
TambahElemen(&depan,&belakang,40);
TampilkanNilai(depan);
HapusElemen(&depan,&belakang);
printf("Nilai-Nilai didalam queue");
printf("Setelah penghapusan elemen pertama:\n");
TampilkanNilai(depan);
getch();
return 0;
}


Hasil Running :




Pembahasan :

            Program ini merupakan sebuah antrian dan dalam program ini terdapat penghapusan antrian. Dalam program ini menggunakan function, pointer dan juga linked list( temp -> data ) itu dinamakan linked list, linked list ini berguna sebagai penghubung nilai satu dengan yang lannya.

Sabtu, 10 Juni 2017

PRAKTIKUM_MODUL_9

MODUL IX QUEUE

Praktikum

Studi Kasus 1


#include<iostream.h>
#include<stdio.h>
#include<conio.h>
void main()
{
int cek=0, data[8], x, hapus;
char pil;
do
{
clrscr();
cout<<" Ujian Praktikum Struktur Data Queue "<<endl;
cout<<" Rinaldi "<<endl;
cout<<" Universitas Kuningan "<<endl;
cout<<endl;
printf("d. Masukan Data Antrian \n");
printf("e. Hapus Data Antrin \n");
printf("n. Lihat Data Antrian \n");
printf("y. Exit Program \n");
cout<<endl;
printf(" Ketikan Huruf Dari Salah Satu Pilihan Diatas ");
pil=getche();
cout<<endl;
if (pil!='d' && pil !='e' && pil !='n' && pil!='y')
printf("\n\n salah ketik, ulangi lagi .. \n");
else
{
if(pil=='d')
{
if(cek==8)
{
printf("\n Antrian Penuh\n");
getch();
}
else
{
printf("\n MASUKKAN ANGKA->"); scanf("%i",&x);
data[cek]=x;
cek++ ;
}}
else {
if(pil=='e')
{
if(cek==0)
printf("\nMaaf Tidak Antrian Untuk Dihapus \n\n");
else
{
hapus=data[0];
for(int v=0; v<cek; v++)
data[v]=data[v+1];
data[cek-1]=NULL;
cek--;
cout<<endl;
printf("Yakin  Anda Ingin Data Ini Dihapus ?? ");
cout<<endl;
printf("\nData dengan nilai = %i akan terhapus. [Tekan Enter]",hapus);
}
getch();
}
else
{
if(pil=='n')
{
if(cek==0)
printf("\n Maaf Tidak Ada Antrian Untuk Di Tampilkan. \n\n");
else
{
printf("\n");
for(int z=0; z<cek; z++)
{
printf(" [ %i ] \n",data[z]);
}
}
getch();
}
}
}
}
}while(pil!='y');
cout<<endl;
cout<<endl;
printf(" Yakin Anda Ingin Keluar .. ?? {{{ Tekan Enter Cak }}} ");
pil=getche();
}


 Hasil Running :





 Pembahasan :
            Program diatas membahas tentang program Queue(antrian),didalam program diatas kita memilih 4 Menu pilihan yang kita inginkan yaitu ada input,delete,view,dan exit. Di Program ini dibatasi Inputannya yaitu hanya 10 antrian batas maksimalnya,program ini menggunakan do-while untuk melakukan perulangan secara bertambah. Kemudian untuk Input Data antrian digunakanif else jika yang diinputkan melebihi batas maka akan keluar peringatan antrian penuh.




Studi Kasus 2


#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
struct node{
int data;
struct node*p;};
void TambahElemen (struct node **d, struct node **b, int nilai){
/*membuat struktur node baru*/
struct node*temp;
temp=(struct node *)malloc (sizeof (struct node));

/*mendefinisikan field yang terdapat pada struktur node yang baru dialokasikan*/
temp->data=nilai;
temp->p=NULL;
if(*d== NULL){
*d= temp;
}else{
(*b)->p=temp;}
*b=temp;}
void HapusElemen (struct node **d, struct node **b){
struct node*temp;
if(*d == NULL){
printf("Tidak terdapat elemen dalam queue");
}else{
temp= *d;
*d= temp->p;
free(temp);
if(*d == NULL){
*b=NULL;
}
}
}
void TampilkanNilai(struct node *d){
int nilai;
while(d != NULL){
nilai = d->data;
printf("%d\n",nilai);
d=d->p;}
}
int main(void){
struct node*depan, *belakang;
depan = belakang =NULL;
TambahElemen(&depan,&belakang,10);
TambahElemen(&depan,&belakang,20);
TambahElemen(&depan,&belakang,30);
TambahElemen(&depan,&belakang,40);
TampilkanNilai(depan);
HapusElemen(&depan,&belakang);
printf("Nilai-Nilai didalam queue");
printf("Setelah penghapusan elemen pertama:\n");
TampilkanNilai(depan);
getch();
return 0;
}


Hasil Running :




Pembahasan :
            Program ini merupakan sebuah antrian dan dalam program ini terdapat penghapusan antrian. Dalam program ini menggunakan function, pointer dan juga linked list( temp -> data ) itu dinamakan linked list.



Minggu, 04 Juni 2017

PRAKTIKUM_MODUL_8

MODUL VIII STACK


Praktikum
Studi Kasus 1

#include <iostream.h>
#include <conio.h>
#define max 5

struct Tumpukan{
int atas;
int data[max];
}T;

void awal(){
T.atas=-1;
            }

int kosong(){
if(T.atas==-1)
return 1;
else
return 0;
                        }

int penuh(){
if(T.atas==max-1)
return 1;
else
return 0;
                        }
void input(int data){
if(kosong()==1)
{T.atas++;
T.data[T.atas]=data;
cout<<"Data "<<T.data[T.atas]<<" masuk ke stack";}
else if(penuh()==0)
{T.atas++;
T.data[T.atas]=data;
cout<<"Data "<<T.data[T.atas]<<" masuk ke stack";}

else
cout<<"Tumpukan penuh";
}
void hapus(){
if(kosong()==0){
cout<<"Data teratas sudah terambil";
T.atas--;
}
else
cout<<"Data kosong";
}
void tampil(){
if(kosong()==0)
{for(int i=T.atas;i>=0;i--)
{cout<<"\nTumpukan ke "<<i<<"="<<T.data[i];}
}
else
cout<<"Tumpukan kosong";
}
void bersih(){
T.atas=-1;

cout<<"Tumpukan kosong!";
}
void main(){
int pil,data;
awal();
do
{
clrscr();
cout<<"1. Input\n2. Hapus\n3. Tampil\n4. Bersihkan\n5. Keluar\nMasukkan pilihan :";
cin>>pil;
switch(pil)
{case 1:cout<<"Masukkan data = ";cin>>data;
input(data);
break;
case 2:hapus();
break;
case 3:tampil();
break;
case 4:bersih();
break;
case 5: cout<<"Terimakasih, tekan enter untuk keluar";
}
getch();     }
while(pil!=5);}



Hasil Running :


Pembahasan :
            Program diatas adalah contoh sebuah stack yang dimana di dalamnya terdapat operasi PUSH ( memasukan data ), POP ( menghapus data yang terakhir diinputkan ) Tampil ( Menampilkan isi tumpukan) CLEAR ( menghapus semua tumpukan ) dan exit.




Studi Kasus 2

#include<iostream.h>
#include<conio.h>
#include<string.h>
struct
{
char data [15][100], max[15];
int i,j;
}stack;
void push()
{
stack.i++;
cout<<" Masukan Data : ";
cin>>stack.max;
strcpy(stack.data[stack.i], stack.max);
}
void pop ()
{
if(stack.i>0)
{
cout<<" Data Yang Terambil : "<<stack.data[stack.i]<<endl;
stack.i--; stack.j--;
}
else
cout<<" Tak Ada Data Yang Terambil "<<endl;
}
void view(int n)
{
if(stack.j>0)
{
for(int e=n; e>=1; e--)
cout<<stack.data[e]<<endl;
}
else
{
cout<<" Tak Ada Data Tersimpan "<<endl;
}
}
void clear()
{
stack.j=0; stack.i=0;
}
void main()
{
int n, plh;
ayo:
clrscr();
cout<<" Contoh Program Stack [Tumpukan] \n\n ";
cout<<" Maksimal Tumpukan Data : "; cin>>n;
stack.data[n];
stack.i=0;
stack.j=0;
balik:
clrscr();
cout<<"\n 1. Push \n 2. Pop \n 3. View \n 4. Clear \n 5. Qiit \n";
cout<<"\n Pilih : "; cin>>plh;
cout<<endl;
if(plh==1)
{
if(stack.j<n)
{
stack.j++;
push();
}
else
{
cout<<" Tumpukan Penuh "<<endl;
getch();
}
goto balik;
}
else if(plh==2)
{
pop();
getch(); goto balik;
}
else if(plh==3)
{
view (stack.i);
getch(); goto balik;
}
else if(plh==4)
{
clear();
getch();
goto balik;
}
else if(plh==5)
{
getch(); goto ayo;
}
else
{
cout<<" Input Yang Anda Masukan Salah !!! "<<endl;
getch(); goto ayo;
}
}



Hasil Running :





Pembahasan :
            Program ini sama seperti dengan study kasus sbelumnya, namun terdapat beberapa yang berbeda yaitu dalam program ini kita dapat menentukan batasan perulangan input dan output atau berapa maksimal tumpukan yang dapat diinputkan.





Latihan

Konsep stack dilogikakan seperti sebuah tumpukan barang yang tersusun keatas dengan ketinggian tumpukan yang telah di tentukan, untuk mengilustrasikannya program dibawah ini.

#include<conio.h>
#include<stdio.h>
#define N 20
main()
{
int nilai[N],i,jml;
printf(" Jumlah Maksimal Tumpukan (<=20) = ");
scanf("%d",&jml);
for(i=0; i<jml; i++)
{
printf(" Data ke-%d = ", i+1);
scanf("%d",&nilai[i]);
if(i==jml-1)
{
printf("Tumpukan Penuh");
getch();
}
}
for(i=jml-1; i>=0;i--)
{
printf("\n data ke-%d = %d", i+1, nilai[i]);
}
getch();
return 0;
}


Hasil Running :



 Pembahasan :
            Program ini melakukan inputan data penuh,kita masukan dulu tampungan data array nya maksimal 20,Kemudian menggunakan perulangan for nilai pertama yang diinputkan.