Advertisement
cecepsuwanda

linklist_in_c

Dec 6th, 2017
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.84 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdbool.h>
  4. #include <stdlib.h>
  5. #include <conio.h>
  6. typedef struct{
  7.     char nama[50];
  8.     int nim;
  9.     int ipk;
  10. }typeint;
  11. typedef struct tNode *address;
  12. typedef struct tNode
  13. {
  14.     typeint value;
  15.     address Next;
  16. }Node;
  17. typedef struct{
  18.     address First;
  19. }List;
  20. void CreateEmpty(List *L)
  21. {
  22.     (*L).First=NULL;
  23. }
  24. bool isEmpty(List L)
  25. {
  26.     if(L.First==NULL)
  27.     return true;
  28.     else
  29.     return false;
  30. }
  31. address alokasi(typeint x){
  32.     address P=(Node*)malloc(sizeof(Node));
  33.     if(P!=NULL){
  34.         P->value=x;
  35.         P->Next=NULL;
  36.     }
  37.     return P;
  38. }
  39. void dealokasi(address P){
  40.     free(P);
  41. }
  42. void InsertFirst(List *L, address P)
  43. {
  44.     P->Next=(*L).First;
  45.     (*L).First=P;
  46. }
  47. void
  48. InsertValueFirst(List
  49. *L, typeint x)
  50. {
  51.     address
  52.     P=alokasi(x);
  53.     InsertFirst(L,P);
  54.     printf("Berhasil memasukkan data!");
  55. }
  56. void DelFirst(List *L)
  57. {
  58.     if(!isEmpty(*L)){
  59.         address P=(*L).First;
  60.         (*L).First=(*L).First->Next;
  61.         free(P);
  62.         printf("Del First Berhasil!");
  63.     }else{
  64.         printf("List Empty!");
  65.     }
  66. }
  67. void ShowList(List L){
  68.     address P;
  69.     P=L.First;
  70.     if(!isEmpty(L)){
  71.         do{
  72.             printf("%d ", P->value);
  73.             P=P->Next;
  74.         }while(P!=NULL);
  75.     }else{
  76.         printf("List Empty!");
  77.     }
  78. }
  79. void InsertLast(List *L,
  80. typeint x)
  81. {
  82.     address P;
  83.     address
  84.     Ptr=alokasi(x);
  85.     P=(*L).First;
  86.     if(!isEmpty(*L)){
  87.         while(P->Next!=NULL){
  88.             P=P->Next;
  89.         }
  90.         P->Next=Ptr;
  91.         printf("Berhasil memasukkan data!");
  92.     }else{
  93.         InsertFirst(L,
  94.         Ptr);
  95.         printf("Berhasil memasukkan data!");
  96.     }
  97. }
  98. void DelLast(List *L){
  99.     address P,Last;
  100.     P=(*L).First;
  101.     if(!isEmpty(*L)){
  102.         if(P->Next==NULL){
  103.             DelFirst(L);
  104.         }else{
  105.             while(P->Next->Next !=NULL){
  106.                 P=P->Next;
  107.             }
  108.             Last=P->Next;
  109.             P->Next=NULL;
  110.             free(Last);
  111.             printf("Dl Last berhasil ea!");
  112.         }
  113.     }else{
  114.         printf("Last Empty!");
  115.     }
  116. }
  117. void InsertAfter(List *L, typeint a, typeint after){
  118.     address P;
  119.     address Ptr=alokasi(a);
  120.     bool found=false;
  121.     P=(*L).First;
  122.     if(!isEmpty(*L)){
  123.         while(P!=NULL){
  124.             if(P->value==after){
  125.                 found=true;
  126.                 break;
  127.             }
  128.             P=P->Next;
  129.         }
  130.         if(found){
  131.             Ptr->Next=P->Next;
  132.             P->Next=Ptr;
  133.             printf("Berhasil memasukan data ea");
  134.         }else{
  135.             printf("Data %d tidak di temukan ea", after);
  136.         }
  137.     }else{
  138.         InsertFirst(L, Ptr);
  139.         printf("Berhasil memasukan data ea");
  140.     }
  141. }
  142.  
  143. void DelAfter(List *L, typeint after){
  144.     address P,Q;
  145.     bool found=false;
  146.     P=(*L).First;
  147.     if(!isEmpty(*L)){
  148.         while(P!=NULL){
  149.             if(P->value==after){
  150.                 found=true;
  151.                 break;
  152.             }
  153.             P=P->Next;
  154.         }
  155.         if(found){
  156.             Q=P->Next;
  157.             if(Q!=NULL){
  158.                 P->Next=Q->Next;
  159.                 Q->Next=NULL;
  160.                 free(Q);
  161.                 printf("Del After Berhasil ea");
  162.             }else{
  163.                 printf("tidak ada data setelah %d",after);
  164.             }
  165.         }else{
  166.             printf("Data %d tidak di temukan",after);
  167.         }
  168.     }else{
  169.         printf("List empty");
  170.     }
  171. }
  172.  
  173. int main(){
  174.     List L;
  175.     typeint a, after;
  176.     CreateEmpty(&L);
  177.     do{
  178.         system("cls");
  179.         puts("Menu");
  180.         puts("1. insert first");
  181.         puts("2. Delete First");
  182.         puts("3. Insert Last");
  183.         puts("4. Delete Last");
  184.         puts("5. Insert After");
  185.         puts("6. Delete After");
  186.         puts("7. Show List");
  187.         puts("Exc");
  188.         puts("Pilihan : ");
  189.         switch(getch()){
  190.         case '1' : printf("Input Number of Integer : ");scanf("%d",&a);
  191.             InsertValueFirst(&L,a);
  192.             break;
  193.         case '2' : DelFirst(&L);
  194.             break;
  195.         case '3' : printf("Input Number of Integer : ");scanf("%d",&a);
  196.             InsertLast(&L,a);
  197.             break;
  198.         case '4' : DelLast(&L);
  199.             break;
  200.         case '5' : if(!isEmpty(L)){
  201.                 printf("input Number of Integer : ");scanf("%d",&a);
  202.                 printf("Insert setelah angka : ");scanf("%d",&after);
  203.                 InsertAfter(&L,a,after);
  204.             }break;
  205.         case '6' : if(!isEmpty(L)){
  206.                 printf("Delete setelah angka : ");scanf("%d",&after);
  207.                 DelAfter(&L,after);
  208.             }else{
  209.                 printf("data kosong");
  210.             }break;
  211.         case '7' : ShowList(L);
  212.             break;
  213.         }
  214.     }
  215.     while(getch()!=27);
  216.     getch();
  217.     return 0;
  218. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement