ClavinJune

City MultipleLinkList

Jul 18th, 2017
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.65 KB | None | 0 0
  1. #include "stdio.h"
  2. #include "string.h"
  3. #include "malloc.h"
  4. #define MAX 3
  5. struct City{
  6.     char name[100];
  7.     struct City *routes[MAX], *next;
  8.     int size;
  9. }*head, *tail, *curr, *dst;
  10.  
  11. void createCity(char name[100]){
  12.     curr = (struct City*)malloc(sizeof(struct City));
  13.  
  14.     strcpy(curr->name,name);
  15.     curr->size = 0;
  16.     curr->next = NULL;
  17.  
  18.     if(head == NULL){
  19.         head = tail = curr;
  20.     }else{
  21.         tail->next = curr;
  22.         tail = curr;
  23.     }
  24. }
  25.  
  26. void viewCities(){
  27.     curr = head;
  28.     if(head == NULL){
  29.         printf("No City. . ");
  30.         return;
  31.     }
  32.  
  33.     while(curr != NULL){
  34.         printf("%s\n", curr->name);
  35.         curr = curr->next;
  36.     }
  37. }
  38.  
  39. void createRoute(char from[100], char to[100]){
  40.     if(strcmp(from, to) == 0){
  41.         printf("Source & Destination are the same!");
  42.         return;
  43.     }
  44.     curr = dst = head;
  45.     while(curr != NULL){
  46.         if(strcmp(curr->name, from) == 0)
  47.             break;
  48.  
  49.         curr = curr->next;
  50.     }
  51.  
  52.     if(curr->size != MAX){
  53.         while(dst != NULL){
  54.             if(strcmp(dst->name, to) == 0)
  55.                 break;
  56.  
  57.             dst = dst->next;
  58.         }
  59.  
  60.         if(dst == NULL){
  61.             printf("Destination City Not Found!");
  62.             return;
  63.         }
  64.  
  65.         curr->routes[curr->size] = dst;
  66.         curr->size++;
  67.     }else{
  68.         printf("Route is Max!");
  69.     }
  70. }
  71.  
  72. void changeRoute(char from[100], char origin[100], char to[100]){
  73.     curr = dst = head;
  74.     while(curr != NULL){
  75.         if(strcmp(curr->name, from) == 0)
  76.             break;
  77.  
  78.         curr = curr->next;
  79.     }
  80.  
  81.     while(dst != NULL){
  82.         if(strcmp(dst->name, to) == 0)
  83.             break;
  84.  
  85.         dst = dst->next;
  86.     }
  87.  
  88.     int temp;
  89.     for(int i=0;i<MAX;i++){
  90.         if(strcmp(curr->routes[i]->name, origin) == 0){
  91.             temp = i;
  92.             break;
  93.         }
  94.     }
  95.  
  96.     curr->routes[temp] = dst;
  97. }
  98.  
  99. void deleteRoute(char from[100], char to[100]){
  100.     curr = head;
  101.     while(curr != NULL){
  102.         if(strcmp(curr->name, from) == 0)
  103.             break;
  104.  
  105.         curr = curr->next;
  106.     }
  107.  
  108.     int temp;
  109.     for(int i=0;i<curr->size;i++){
  110.         if(strcmp(curr->routes[i]->name, to) == 0){
  111.             temp = i;
  112.             break;
  113.         }
  114.     }
  115.     if(temp == curr->size)
  116.         curr->routes[temp] = NULL;
  117.     else{
  118.         for(int i=temp;i<curr->size;i++){
  119.             curr->routes[i] = curr->routes[i+1];
  120.         }
  121.     }
  122.     curr->size--;
  123.  
  124. }
  125.  
  126. void viewRoute(char name[100]){
  127.     curr = head;
  128.     while(curr != NULL){
  129.         if(strcmp(curr->name, name) == 0)
  130.             break;
  131.  
  132.         curr = curr->next;
  133.     }
  134.  
  135.     if(curr == NULL)
  136.         printf("No City Found!");
  137.     else{
  138.         for(int i=0;i<curr->size;i++)
  139.         printf("%s\n",curr->routes[i]->name);
  140.     }
  141. }
  142.  
  143. int main(int argc, char **argv){
  144.     createCity("Satu");
  145.     createCity("Dua");
  146.     createCity("Tiga");
  147.     createCity("Empat");
  148.     createRoute("Satu", "Dua");
  149.     createRoute("Satu", "Tiga");
  150.     createRoute("Satu", "Empat");
  151.     deleteRoute("Satu", "Tiga");
  152.     createRoute("Satu", "Dua");
  153.     viewRoute("Satu");
  154.     getchar();
  155.     return 0;
  156. }
Add Comment
Please, Sign In to add comment