akevintg

Double Link List

Mar 20th, 2014
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.76 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<Windows.h>
  3.  
  4. struct data{
  5.     int angka;
  6.     struct data *prev;
  7.     struct data *next;
  8. }*head,*now,*temp;
  9.  
  10. void ins(){
  11.     int x;
  12.     printf("Masukan Angka yang ingin ditambahkan : ");
  13.     scanf("%d",&x);fflush stdin;
  14.     now=head;
  15.     do{
  16.         if(x>now->angka){
  17.             //printf("%d",now->angka);getchar();
  18.             temp=now;
  19.             now=(struct data*)malloc(sizeof(data));
  20.             now->angka=x;
  21.             now->next=temp;
  22.             now->prev=temp->prev;
  23.             temp->prev=now;
  24.             if(now->prev!=NULL){
  25.                 now=now->prev;
  26.                 now->next=temp->prev;
  27.             }//kalo dia head
  28.             else
  29.                 head=now;
  30.             break;
  31.         }
  32.        
  33.         else if (now->next==NULL){//kalo tail
  34.             temp=now;
  35.             now=(struct data*)malloc(sizeof(data));
  36.             now->angka=x;
  37.             now->prev=temp;
  38.             now->next=0;
  39.             temp->next=now;
  40.             break;
  41.         }
  42.         else
  43.             now=now->next;
  44.     }while(now!=NULL);
  45. }
  46.  
  47. int main(){
  48.     head=0;
  49.     temp=0;
  50.     int x=0;
  51.     printf("Berapa Angka Yang ingin diinput? ");
  52.     scanf("%d",&x);fflush stdin;
  53.     do{
  54.         now=(struct data*)malloc(sizeof(data));
  55.         printf("Masukan Angka : ");
  56.         scanf("%d",&now->angka);fflush stdin;
  57.         //Double Link list Start
  58.         now->next=head;
  59.         head=now;
  60.         now->prev=NULL;
  61.         if(now->next!=0){
  62.             temp=now;
  63.             now=now->next;
  64.             now->prev=temp;
  65.         }
  66.         // Double Link list end
  67.         /*now->next=head;
  68.         head=now;*/ //Single Link List
  69.         x--;
  70.         system("cls");
  71.         now=head;
  72.         do{
  73.             printf("%d",now->angka);
  74.             if (now->next!=NULL)
  75.                 printf(" -> ");
  76.             now=now->next;
  77.         }while(now!=NULL);
  78.         printf("\n");
  79.     }while(x>0);
  80.     ins();
  81.     system("cls");
  82.     now=head;
  83.     do{
  84.         //printf("((Prev)%d) (Now)%d) %d ((Next)%d) -> ",now->prev,now,now->angka,now->next); //Ngecek bener ga nya
  85.         printf("%d",now->angka);
  86.         if (now->next!=NULL)
  87.             printf(" -> ");
  88.         now=now->next;
  89.     }while(now!=NULL);
  90.     getchar();
  91. }
Advertisement
Add Comment
Please, Sign In to add comment