Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <stdbool.h>
- #include <stdlib.h>
- #include <conio.h>
- typedef struct{
- char nama[50];
- int nim;
- int ipk;
- }typeint;
- typedef struct tNode *address;
- typedef struct tNode
- {
- typeint value;
- address Next;
- }Node;
- typedef struct{
- address First;
- }List;
- void CreateEmpty(List *L)
- {
- (*L).First=NULL;
- }
- bool isEmpty(List L)
- {
- if(L.First==NULL)
- return true;
- else
- return false;
- }
- address alokasi(typeint x){
- address P=(Node*)malloc(sizeof(Node));
- if(P!=NULL){
- P->value=x;
- P->Next=NULL;
- }
- return P;
- }
- void dealokasi(address P){
- free(P);
- }
- void InsertFirst(List *L, address P)
- {
- P->Next=(*L).First;
- (*L).First=P;
- }
- void
- InsertValueFirst(List
- *L, typeint x)
- {
- address
- P=alokasi(x);
- InsertFirst(L,P);
- printf("Berhasil memasukkan data!");
- }
- void DelFirst(List *L)
- {
- if(!isEmpty(*L)){
- address P=(*L).First;
- (*L).First=(*L).First->Next;
- free(P);
- printf("Del First Berhasil!");
- }else{
- printf("List Empty!");
- }
- }
- void ShowList(List L){
- address P;
- P=L.First;
- if(!isEmpty(L)){
- do{
- printf("%d ", P->value);
- P=P->Next;
- }while(P!=NULL);
- }else{
- printf("List Empty!");
- }
- }
- void InsertLast(List *L,
- typeint x)
- {
- address P;
- address
- Ptr=alokasi(x);
- P=(*L).First;
- if(!isEmpty(*L)){
- while(P->Next!=NULL){
- P=P->Next;
- }
- P->Next=Ptr;
- printf("Berhasil memasukkan data!");
- }else{
- InsertFirst(L,
- Ptr);
- printf("Berhasil memasukkan data!");
- }
- }
- void DelLast(List *L){
- address P,Last;
- P=(*L).First;
- if(!isEmpty(*L)){
- if(P->Next==NULL){
- DelFirst(L);
- }else{
- while(P->Next->Next !=NULL){
- P=P->Next;
- }
- Last=P->Next;
- P->Next=NULL;
- free(Last);
- printf("Dl Last berhasil ea!");
- }
- }else{
- printf("Last Empty!");
- }
- }
- void InsertAfter(List *L, typeint a, typeint after){
- address P;
- address Ptr=alokasi(a);
- bool found=false;
- P=(*L).First;
- if(!isEmpty(*L)){
- while(P!=NULL){
- if(P->value==after){
- found=true;
- break;
- }
- P=P->Next;
- }
- if(found){
- Ptr->Next=P->Next;
- P->Next=Ptr;
- printf("Berhasil memasukan data ea");
- }else{
- printf("Data %d tidak di temukan ea", after);
- }
- }else{
- InsertFirst(L, Ptr);
- printf("Berhasil memasukan data ea");
- }
- }
- void DelAfter(List *L, typeint after){
- address P,Q;
- bool found=false;
- P=(*L).First;
- if(!isEmpty(*L)){
- while(P!=NULL){
- if(P->value==after){
- found=true;
- break;
- }
- P=P->Next;
- }
- if(found){
- Q=P->Next;
- if(Q!=NULL){
- P->Next=Q->Next;
- Q->Next=NULL;
- free(Q);
- printf("Del After Berhasil ea");
- }else{
- printf("tidak ada data setelah %d",after);
- }
- }else{
- printf("Data %d tidak di temukan",after);
- }
- }else{
- printf("List empty");
- }
- }
- int main(){
- List L;
- typeint a, after;
- CreateEmpty(&L);
- do{
- system("cls");
- puts("Menu");
- puts("1. insert first");
- puts("2. Delete First");
- puts("3. Insert Last");
- puts("4. Delete Last");
- puts("5. Insert After");
- puts("6. Delete After");
- puts("7. Show List");
- puts("Exc");
- puts("Pilihan : ");
- switch(getch()){
- case '1' : printf("Input Number of Integer : ");scanf("%d",&a);
- InsertValueFirst(&L,a);
- break;
- case '2' : DelFirst(&L);
- break;
- case '3' : printf("Input Number of Integer : ");scanf("%d",&a);
- InsertLast(&L,a);
- break;
- case '4' : DelLast(&L);
- break;
- case '5' : if(!isEmpty(L)){
- printf("input Number of Integer : ");scanf("%d",&a);
- printf("Insert setelah angka : ");scanf("%d",&after);
- InsertAfter(&L,a,after);
- }break;
- case '6' : if(!isEmpty(L)){
- printf("Delete setelah angka : ");scanf("%d",&after);
- DelAfter(&L,after);
- }else{
- printf("data kosong");
- }break;
- case '7' : ShowList(L);
- break;
- }
- }
- while(getch()!=27);
- getch();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement