ulvis.paste.net

Paste Search Dynamic
Recent pastes
menu
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4.  
  5. struct data{
  6.  
  7.     char nama[100];
  8.     char faktur[100];
  9.     int harga;
  10.     int priority;
  11.     data *next,*prev;
  12.  
  13. }*head,*tail,*curr,*temp;
  14.  
  15. void push(char nama[],char faktur[], int harga,int priority){
  16.  
  17.    
  18.     curr=(data*)malloc(sizeof(data));
  19.     strcpy(curr->nama,nama);
  20.     strcpy(curr->faktur,faktur);
  21.     curr->harga=harga;
  22.     curr->priority=priority;
  23.  
  24.     if(head==null){
  25.         head=tail=curr;
  26.     }
  27.  
  28.     else if (priority < head->priority){
  29.         head->prev=curr;
  30.         tail->next=curr;
  31.         head=tail;
  32.     }
  33.  
  34.     else if(priority >= tail->priority){
  35.         tail->next=curr;
  36.         curr->prev=tail;
  37.         tail=curr;
  38.  
  39.     }
  40.  
  41.     else{temp=head;
  42.        
  43.         while(temp->next->priority <= curr->priority){
  44.             temp=temp->next;
  45.         }
  46.  
  47.         curr->next=temp->next;
  48.         temp->next=curr;
  49.         curr->prev=temp;
  50.         curr->next->prev=curr;
  51.     }
  52.  
  53.     head->prev=null;
  54.     tail->next=null;
  55.    
  56. }
  57.  
  58. void pop(int pos1,int pos2){
  59.  
  60.    
  61.     for(int i=0; i < pos1-1 ; i++){
  62.         curr=curr->next;
  63.     }
  64.  
  65.     for(int a=0; a<pos2-1; a++){
  66.         temp=temp->next;
  67.     }
  68.  
  69.     if(curr==head && temp==tail){
  70.        
  71.         while(curr!=temp){
  72.             curr=curr->next;
  73.             free(curr->prev);
  74.         }
  75.         free(curr);
  76.         head=tail=curr=null;
  77.     }
  78.  
  79.     else if(curr==head){
  80.         head=temp->next;
  81.  
  82.         while(curr!=temp){
  83.             curr=curr->next;
  84.             free(curr->prev);
  85.         }
  86.  
  87.         free(curr);
  88.         head->prev=null;
  89.     }
  90.  
  91.     else if(temp==tail){
  92.         tail=curr->prev;
  93.        
  94.         while(curr!=temp){
  95.             curr=curr->next;
  96.             free(curr->prev);
  97.         }
  98.         free(curr);
  99.         tail->next=null;
  100.     }
  101.  
  102.     else{
  103.  
  104.         curr->prev->next=temp->next;
  105.         temp->next->prev=curr->prev;
  106.  
  107.         while(curr!=temp){
  108.             curr=curr->next;
  109.             free(curr->prev);
  110.         }
  111.  
  112.         free(curr);
  113.     }
  114.  
  115. }
  116.  
  117.  
  118.  
  119. void update(char faktur[]){
  120.     curr=head;
  121.     char ans[10];
  122.    
  123.     int num=0;
  124.  
  125.     char namaup[100];
  126.     int hargaup;
  127.     int priorityup;
  128.  
  129.     while(curr!=null){
  130.         if(strcmp(curr->faktur,faktur)==0){break;}
  131.         else{
  132.             curr=curr->next;
  133.         }
  134.         num++;
  135.     }
  136.  
  137.     if(curr==null){
  138.         printf("Data Not Found!");
  139.         getchar();
  140.     }
  141.     else{
  142.         /*printf("Masukan Harga Baru: ");
  143.         scanf("%d",&curr->harga); fflush(stdin);*/
  144.  
  145.         /*printf("Apakah Mau Ganti Priority ?: ");
  146.         scanf("%s",ans); fflush(stdin);*/
  147.        
  148.        
  149.         printf("Masukan Priority Baru: ");
  150.         scanf("%d",&curr->priority); fflush(stdin);
  151.        
  152.         strcpy(namaup,curr->nama);
  153.         hargaup=curr->harga;
  154.         priorityup=curr->priority;
  155.  
  156.         pop(num,num);
  157.         push(namaup,faktur,hargaup,priorityup);
  158.        
  159.     }
  160.  
  161. }
  162.  
  163.  
  164. void cetak(){
  165.    
  166.     curr=head;
  167.  
  168.     while(curr!=null){
  169.         printf("%-10s %-10s %-10d %-10d\n",curr->nama,curr->faktur,curr->harga,curr->priority);
  170.         curr=curr->next;
  171.     }
  172.  
  173. }
  174.  
  175. int main(){
  176.  
  177.     int menu;
  178.  
  179.     char namamain[100];
  180.     char fakturmain[100];
  181.     int hargamain;
  182.     int prioritymain;
  183.  
  184.     char fakturupdate[100];
  185.  
  186.     do{ menu=0;
  187.         cetak();
  188.         printf("1.Insert Data\n");
  189.         printf("2.Update\n");
  190.         printf("3.Delete\n");
  191.         printf("4.Exit\n");
  192.  
  193.         printf("Menu[1..4]:");
  194.         scanf("%d",&menu); fflush(stdin);
  195.  
  196.         int pos1del,pos2del;
  197.  
  198.         switch(menu){
  199.            
  200.         case 1: printf("Masukan Nama: ");
  201.                 scanf("%s",namamain); fflush(stdin);
  202.  
  203.                 printf("Masukan Nomor Faktur: ");
  204.                 scanf("%s",fakturmain); fflush(stdin);
  205.  
  206.                 printf("Masukan Harga: ");
  207.                 scanf("%d",&hargamain); fflush(stdin);
  208.  
  209.                 printf("Masukan Priority: ");
  210.                 scanf("%d",&prioritymain); fflush(stdin);
  211.  
  212.                 push(namamain,fakturmain,hargamain,prioritymain);
  213.                 break;
  214.  
  215.         case 2: printf("Masukan Faktur yang Ingin Dicari: ");
  216.                 scanf("%s",fakturupdate); fflush(stdin);
  217.  
  218.                 update(fakturupdate);
  219.                 break;
  220.  
  221.         case 3: printf("Masukan posisi pertama: ");
  222.                 scanf("%d",&pos1del); fflush(stdin);
  223.  
  224.                 printf("Masukan posisi kedua: ");
  225.                 scanf("%d",&pos2del); fflush(stdin);
  226.  
  227.                 pop(pos1del,pos2del);
  228.                 break;
  229.         }
  230.         system("cls");
  231.    
  232.     }while(menu!=4);
  233.  
  234.    
  235.  
  236.  
  237. return 0;
  238. }
Parsed in 0.034 seconds