akevintg

QUIZ I DATA STRUCTURE

Apr 9th, 2014
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.97 KB | None | 0 0
  1. //
  2. //  main.cpp
  3. //  Lat KUIS I
  4. //
  5. //  Created by Alexander Kevin on 4/10/14.
  6. //  Copyright (c) 2014 Alexander Kevin. All rights reserved.
  7. //
  8.  
  9. #include<stdio.h>
  10. #include<stdlib.h>
  11. #include<string.h>
  12.  
  13. struct data{
  14.     int nim;
  15.     char nama[100];
  16.     struct data *next;
  17.     struct data *prev;
  18. }*head=0,*tail=0,*curr=0,*temp=0;
  19.  
  20. int flag1=0;//1=stack,2=queue
  21. int flag2=0;//1=single,2=double
  22.  
  23. void menu();
  24. void pH();//push head
  25. void pT();//push tail
  26. void pS();//push search
  27. void Ph();//pop head
  28. void Pt();//pot tail
  29. void Ps();//pop search
  30. void view();
  31. void set();
  32. void enter();
  33.  
  34. void enter(){
  35.     for(int x=0;x<25;x++,printf("\n"));
  36. }
  37.  
  38. void set(){
  39.     system("cls");
  40.     enter();
  41.     do{
  42.         printf("Gunakan sistem Single linked list(1)/Double linked list(2) : ");
  43.         scanf("%d",&flag2);fflush (stdin);
  44.     }while(flag2!=2&&flag2!=1);
  45.     do{
  46.         printf("Gunakan sistem Stack(1)/Queue(2) : ");
  47.         scanf("%d",&flag1);fflush (stdin);
  48.     }while(flag1!=2&&flag1!=1);
  49.     menu();
  50.    
  51. }
  52.  
  53. void menu(){
  54.     system("cls");
  55.     int pilih;
  56.     enter();
  57.    
  58.     if(flag2==1)
  59.         printf("This Tutorial Using Single Linked-List, ");
  60.     else
  61.         printf("This Tutorial Using Double Linked-List, ");
  62.     if(flag1==1)
  63.         printf("Stack system\n");
  64.     else
  65.         printf("Queue system\n");
  66.     printf("===================================\n");view();
  67.     printf("Menu : \n1. Push(double Auto-Search Push,single Head Push)\n2. Pop\n3. Selection Pop\n4. EXIT\n");
  68.     do{
  69.         printf(")Masukan Pilihan Anda [1...4] : ");
  70.         scanf("%d",&pilih);fflush (stdin);
  71.     }while(pilih>4&&pilih<1);
  72.     switch(pilih){
  73.         case 1:
  74.             pS();
  75.             break;
  76.         case 2:
  77.             if(flag1==1)
  78.                 Ph();
  79.             else
  80.                 Pt();
  81.             break;
  82.         case 3:
  83.             Ps();
  84.             break;
  85.         case 4:
  86.             break;
  87.         default:
  88.             break;
  89.     }
  90.  
  91.    
  92. }
  93.  
  94. void pS(){
  95.     curr=(struct data*)malloc(sizeof(data));
  96.     printf("Masukan Nama Yang ingin diinput : ");
  97.     scanf("%s",curr->nama);fflush (stdin);
  98.     printf("Masukan NIM : ");
  99.     scanf("%d",&curr->nim);fflush (stdin);
  100.     if(head==0){
  101.         head=tail=temp=curr;
  102.         curr->next=curr->prev=0;
  103.     }
  104.     else if(flag2==2&&strcmp(head->nama,curr->nama)<1)
  105.         pH();
  106.     else if(flag2==2&&strcmp(tail->nama,curr->nama)>=1)
  107.         pT();
  108.     else if(flag2==2){
  109.         temp=head;
  110.         while(temp!=0){
  111.             if(strcmp(temp->nama,curr->nama)<1)
  112.                 break;
  113.             temp=temp->next;
  114.         }
  115.         curr->next=temp;
  116.         curr->prev=temp->prev;
  117.         temp->prev=curr;
  118.         temp=curr->prev;
  119.         temp->next=curr;
  120.         getchar();
  121.     }
  122.     else
  123.         pH();
  124.     menu();
  125. }
  126.  
  127. void Ps(){
  128.     if(head!=0&&flag2!=1){
  129.         curr=(struct data*)malloc(sizeof(data));
  130.         printf("Masukan Nama Yang ingin dihapus : ");
  131.         scanf("%s",curr->nama);fflush (stdin);
  132.         if(strcmp(head->nama,curr->nama)==0)
  133.             Ph();
  134.         else if(strcmp(tail->nama,curr->nama)==0)
  135.             Pt();
  136.         else {
  137.             temp=head;
  138.             while(strcmp(temp->nama,curr->nama)!=0){
  139.                 temp=temp->next;
  140.             }
  141.             temp->prev->next=temp->next;
  142.             free(temp);
  143.             printf("%s\n",temp->nama);
  144.             menu();
  145.         }
  146.    
  147.     }
  148.     else {
  149.         if(flag2==1)
  150.             printf("FITUR TIDAK TERSEDIA");
  151.         else
  152.             printf("Tidak ada data\n");
  153.         getchar();
  154.         menu();
  155.     }
  156. }
  157.  
  158. void pH(){
  159.     curr->next=head;
  160.     if(flag2==2)
  161.         head->prev=curr;
  162.     head=curr;
  163.     head->prev=0;
  164. }
  165.  
  166. void pT(){
  167.     tail->next=curr;
  168.     if(flag2==2)
  169.         curr->prev=tail;
  170.     curr->next=0;
  171.     tail=curr;
  172. }
  173.  
  174. void Ph(){
  175.     if(head!=0){
  176.         curr=head;
  177.         head=curr->next;
  178.         if(flag2==2&&head!=0)
  179.             head->prev=0;
  180.         free(curr);
  181.     }
  182.     else
  183.         printf("Tidak ada data yang bisa dihapus");
  184.     menu();
  185. }
  186.  
  187. void Pt(){
  188.     if(head!=0){
  189.         if(flag2==2){
  190.             curr=tail;
  191.             tail=curr->prev;
  192.             if(tail!=0)
  193.                 tail->next=0;
  194.             else
  195.                 head=0;
  196.             free (curr);
  197.         }
  198.         else {
  199.             curr=tail;
  200.             if(head!=tail){
  201.                 tail=head;
  202.                 while(tail->next!=curr)
  203.                     tail=tail->next;
  204.                 tail->next=0;
  205.             }
  206.             else
  207.                 head=0;
  208.             free(curr);
  209.            
  210.         }
  211.     }
  212.     else
  213.         printf("Tidak ada data yang bisa dihapus");
  214.     menu();
  215. }
  216.  
  217.  
  218.  
  219. void view(){
  220.     curr=head;
  221.     while(curr!=0){
  222.         printf("%s, %d\n",curr->nama,curr->nim);
  223.         curr=curr->next;
  224.     }
  225.     printf("\n");
  226. }
  227.  
  228.  
  229. int main(){
  230.     enter();
  231.     printf("Welcome to Lat. Kuis 1 STRUKTUR DATA\n");
  232.     getchar();
  233.     set();
  234. }
Advertisement
Add Comment
Please, Sign In to add comment