#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
void BUAT_SIMPUL(int X);
void AWAL();
void CETAK();
void InsertKanan();
void GeserQ(int I);
void InsertTengah();
struct Node{
int INFO;
struct Node *LINK;
};
typedef struct Node Simpul;
Simpul *P, *FIRST, *LAST, *Q;
int X;
int main()
{
int A[7]={25,12,17,10,15,5,14};
int I;
FIRST=NULL;
X=A[0];
BUAT_SIMPUL(X);
AWAL();
for(I=1;I<=6;I++)
{
X=A[I];
BUAT_SIMPUL(X);
InsertKanan();
}
printf("\n Isi sebelum insert tengah: ");
CETAK();
I=6;
GeserQ(I);
X=100;
BUAT_SIMPUL(X);
InsertTengah();
printf("\n isi sesudah inseert tengah: ");
CETAK();
}
void BUAT_SIMPUL(int X)
{
P=(Simpul*)malloc(sizeof(Simpul));
if(P !=NULL)
{
P->INFO=X;}
else
{
printf("pembuatan simpul gagal");
getch();
exit(1);}
}
void AWAL()
{
FIRST=P;
LAST=P;
P->LINK=NULL;
}
void InsertKanan()
{
LAST->LINK=P;
LAST=P;
P->LINK=NULL;
}
void GeserQ(int J);
{
int I;
P = FIRST;
for(I=1; I<=J; J++)
{
P = Q->LINK;
}
}
void InsertTengah()
{
P->LINK = Q->LINK;
Q->LINK = P;
}
void CETAK(void)
{
int X;
Q=FIRST;
while(Q !=NULL)
{
X=Q->INFO;
printf("%4i",X);
Q = Q->LINK;}
}
""INSERT KIRI""
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
void BUAT_SIMPUL(int X);
void AWAL();
void CETAK(void);
void InsertKanan();
void InsertKiri();
struct Node{
int INFO;
struct Node *LINK;
};
typedef struct Node Simpul;
Simpul *P, *FIRST, *LAST, *Q;
int X;
int main()
{
int A[7]={25,12,17,10,15,5,14};
int I;
FIRST=NULL;
I=0;
X=A[I];
BUAT_SIMPUL(X);
AWAL();
for(I=1;I<=6;I++)
{
X=A[I];
BUAT_SIMPUL(X);
InsertKanan();
}
printf("\n Isi sebelum insert kiri: ");
CETAK();
X=100;
BUAT_SIMPUL(X);
InsertKiri();
printf("\n isi sesudah insert kiri: ");
CETAK();
}
void BUAT_SIMPUL(int X)
{
P=(Simpul*)malloc(sizeof(Simpul));
if(P !=NULL)
{
P->INFO=X;}
else
{
printf("pembuatan simpul gagal");
getch();
exit(1);}
}
void AWAL()
{
FIRST=P;
LAST=P;
P->LINK=NULL;
}
void InsertKanan()
{
LAST->LINK=P;
LAST=P;
P->LINK=NULL;
}
void InsertKiri()
{
P->LINK=FIRST;
FIRST = P;
}
void CETAK(void)
{
int X;
Q=FIRST;
while(Q !=NULL)
{
X=Q->INFO;
printf("%4i",X);
Q=Q->LINK;}
}
""INSERT KANAN""
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
void BUAT_SIMPUL(int X);
void AWAL();
void CETAK();
void InsertKanan();
struct Node{
int INFO;
struct Node *LINK;
};
typedef struct Node Simpul;
Simpul *P, *FIRST, *LAST, *Q;
int X;
int main()
{
int A[7]={25,12,17,10,15,5,14};
int I;
FIRST=NULL;
I=0;
X=A[I];
BUAT_SIMPUL(X);
AWAL();
for(I=1;I<=6;I++)
{
X=A[I];
BUAT_SIMPUL(X);
InsertKanan();
}
printf("\n Isi sebelum insert kanan: ");
CETAK();
X=100;
BUAT_SIMPUL(X);
InsertKanan();
printf("\n isi sesudah insert kanan: ");
CETAK();
}
void BUAT_SIMPUL(int X)
{
P=(Simpul*)malloc(sizeof(Simpul));
if(P !=NULL)
{
P->INFO=X;}
else
{
printf("pembuatan simpul gagal");
getch();
exit(1);}
}
void AWAL()
{
FIRST=P;
LAST=P;
P->LINK=NULL;
}
void InsertKanan()
{
LAST->LINK=P;
LAST=P;
P->LINK=NULL;
}
void CETAK(void)
{
int X;
Q=FIRST;
while(Q !=NULL)
{
X=Q->INFO;
printf("%4i",X);
Q=Q->LINK;}
}
""PRAKTIKUM QUEUE""
#include<stdio.h>#include<conio.h>
#define MAX 5
typedef struct
{
int elm[MAX];
int head;
int tail;
}
tElmList;
//menginisialisasi queue
void Initial(tElmList* IsiQueue);
//Memasukan sebuah elemen ke Queue
void Insert(tElmList* IsiQueue);
//mengeluarkan sebuah elemen dari Queue
void Delete(tElmList* IsiQueue);
//mengecek apakah queue kosong
int isEmpty(tElmList IsiQueue);
//mengecek apakah queue penuh
int isFull(tElmList IsiQueue);
//menampilkan isi queue
void Display(tElmList IsiQueue);
int main()
{
tElmList queueList;
int answer;
char jawab;
Initial(&queueList);
do{
printf("QUEUE\n\tMenu Utama : \n\t1.Untuk mereset ulang,");
printf("\n\t2.Untuk memasukan Data baru,");
printf("\n\t3.Untuk mengeluarkan data,");
printf("\n\t4.Untuk menampilkan semua data,");
printf("\n\tSilahkan Masukan Pilihan Anda: ");
scanf("%d",&answer);
if(answer==1)
{
Initial(&queueList);
}
if(answer==2)
{
do{
Insert(&queueList);
do{
printf("Masih ingin menambah data(Y/N: ");
jawab=getch();
printf("\n");
}
while((jawab!='N')&&(jawab!='Y')&&(jawab!='y'));
}while((jawab=='Y')||(jawab=='y'));
}
if(answer==3)
{
printf("data Sebelum Di hapus: ");
Display(queueList);
Delete(&queueList);
printf("\n\nData Setelah Di hapus: ");
Display(queueList);
}
if(answer==4)
{
Display(queueList);
}
do{
printf("\nKembali ke menu utama(Y/N): ");
jawab=getch();
}while((jawab!='N')&&(jawab!='n')&&(jawab!='Y')&&(jawab!='y'));
}while((jawab=='Y')||(jawab=='y'));
return 0;
}
//menginisialisasi queue
void Initial(tElmList*IsiQueue)
{
(*IsiQueue).head=0;
(*IsiQueue).tail=-1;
}
//memasukan sebuah elemen ke stack
void Insert(tElmList*IsiQueue)
{
int nilai;
if(isFull((*IsiQueue))==0)
{
printf("Maaf tidak bisa di isi Lagi.\n");
}
else
{
(*IsiQueue).tail=((*IsiQueue).tail+1)%MAX;
printf("\nMasukan Nilai: ");
scanf("%d",&nilai);
(*IsiQueue).elm[(*IsiQueue).tail]=nilai;
}
}
//mengeluarkan sebuah elemen dari queue
void Delete(tElmList*IsiQueue)
{
if(isEmpty((*IsiQueue))==0)
{
printf("\n\nmaaf tidak ada Yang bisa di delete. ");
}
else if((*IsiQueue).head==(*IsiQueue).tail)
{
Initial(&(*IsiQueue));
}
else
{
(*IsiQueue).head=((*IsiQueue).head+1)%MAX;
}
}
//mengecek apakah queue kosong
int isEmpty(tElmList IsiQueue)
{
if(IsiQueue.tail==-1)
{
return (0);
}
return (1);
}
//mengecek apakah queue penuh
int isFull(tElmList IsiQueue)
{
if(((IsiQueue.tail+1)%MAX==IsiQueue.head)&&(IsiQueue.tail!=-1))
{
return (0);
}
return (1);
}
//menampilkan isi Queue
void Display(tElmList IsiQueue)
{
int i;
if(isEmpty(IsiQueue)==0)
{
printf("\ntelah Kosong.");
}
else if(IsiQueue.head>IsiQueue.tail)
{
printf("\nhead<<");
for(i=IsiQueue.head;i<=(IsiQueue.tail+MAX);i++)
{
printf("%2d",IsiQueue.elm[i%MAX]);
//printf("%2d,%d",IsiQueue.elm[i%MAX],i%MAX);
}
printf(">>tail");
}
else
{
printf("\nhead<<");
for(IsiQueue.head;i<=IsiQueue.tail;i++)
{
printf("%2d",IsiQueue.elm[i]);
}
printf(">>tail");
}
}