Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdio.h"
- #include "string.h"
- #include "malloc.h"
- #define MAX 3
- struct City{
- char name[100];
- struct City *routes[MAX], *next;
- int size;
- }*head, *tail, *curr, *dst;
- void createCity(char name[100]){
- curr = (struct City*)malloc(sizeof(struct City));
- strcpy(curr->name,name);
- curr->size = 0;
- curr->next = NULL;
- if(head == NULL){
- head = tail = curr;
- }else{
- tail->next = curr;
- tail = curr;
- }
- }
- void viewCities(){
- curr = head;
- if(head == NULL){
- printf("No City. . ");
- return;
- }
- while(curr != NULL){
- printf("%s\n", curr->name);
- curr = curr->next;
- }
- }
- void createRoute(char from[100], char to[100]){
- if(strcmp(from, to) == 0){
- printf("Source & Destination are the same!");
- return;
- }
- curr = dst = head;
- while(curr != NULL){
- if(strcmp(curr->name, from) == 0)
- break;
- curr = curr->next;
- }
- if(curr->size != MAX){
- while(dst != NULL){
- if(strcmp(dst->name, to) == 0)
- break;
- dst = dst->next;
- }
- if(dst == NULL){
- printf("Destination City Not Found!");
- return;
- }
- curr->routes[curr->size] = dst;
- curr->size++;
- }else{
- printf("Route is Max!");
- }
- }
- void changeRoute(char from[100], char origin[100], char to[100]){
- curr = dst = head;
- while(curr != NULL){
- if(strcmp(curr->name, from) == 0)
- break;
- curr = curr->next;
- }
- while(dst != NULL){
- if(strcmp(dst->name, to) == 0)
- break;
- dst = dst->next;
- }
- int temp;
- for(int i=0;i<MAX;i++){
- if(strcmp(curr->routes[i]->name, origin) == 0){
- temp = i;
- break;
- }
- }
- curr->routes[temp] = dst;
- }
- void deleteRoute(char from[100], char to[100]){
- curr = head;
- while(curr != NULL){
- if(strcmp(curr->name, from) == 0)
- break;
- curr = curr->next;
- }
- int temp;
- for(int i=0;i<curr->size;i++){
- if(strcmp(curr->routes[i]->name, to) == 0){
- temp = i;
- break;
- }
- }
- if(temp == curr->size)
- curr->routes[temp] = NULL;
- else{
- for(int i=temp;i<curr->size;i++){
- curr->routes[i] = curr->routes[i+1];
- }
- }
- curr->size--;
- }
- void viewRoute(char name[100]){
- curr = head;
- while(curr != NULL){
- if(strcmp(curr->name, name) == 0)
- break;
- curr = curr->next;
- }
- if(curr == NULL)
- printf("No City Found!");
- else{
- for(int i=0;i<curr->size;i++)
- printf("%s\n",curr->routes[i]->name);
- }
- }
- int main(int argc, char **argv){
- createCity("Satu");
- createCity("Dua");
- createCity("Tiga");
- createCity("Empat");
- createRoute("Satu", "Dua");
- createRoute("Satu", "Tiga");
- createRoute("Satu", "Empat");
- deleteRoute("Satu", "Tiga");
- createRoute("Satu", "Dua");
- viewRoute("Satu");
- getchar();
- return 0;
- }
Add Comment
Please, Sign In to add comment