Advertisement
nguyentruong98

Untitled

Dec 7th, 2018
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.83 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. typedef struct node
  5. {
  6.       int vertex;
  7.       struct Node *next;
  8. } Node;
  9. typedef struct Queue
  10. {
  11.       struct Node *head;
  12. } Queue;
  13. typedef struct Stack
  14. {
  15.       struct Node *head;
  16.       struct Node *tail;
  17. } Stack;
  18. Node *makeNode(int vertex)
  19. {
  20.       Node *p = (Node *)malloc(sizeof(Node));
  21.       p->vertex = vertex;
  22.       p->next = NULL;
  23.       return p;
  24. }
  25. void printfnode(Node *p)
  26. {
  27.       if (p == NULL)
  28.             return;
  29.       printf("%d\n", p);
  30. }
  31. Node* top(Stack *s)
  32. {
  33.       return s->tail;
  34. }
  35. Stack* makeStack()
  36. {
  37.       Stack *s;
  38.       s = (Stack *)malloc(sizeof(Stack));
  39.       s->head = NULL;
  40.       return s;
  41. }
  42. void popStack(Stack *s)
  43. {
  44.       Node* iterator;
  45.       if(s->tail == NULL)
  46.       {
  47.             printf("ERROR STACK");
  48.             return;
  49.       }
  50.       if(s->head == s->tail)
  51.       {
  52.             s->head = NULL;
  53.             s->tail = NULL;
  54.             return;
  55.       }
  56.       iterator = s->head;
  57.       while (iterator->next != s->tail)
  58.       {
  59.             iterator = iterator->next;
  60.       }
  61.       iterator->next = NULL;
  62.       s->tail = iterator;
  63.       return;
  64. }
  65. void pushStack(Stack *s, int vertex)
  66. {
  67.       Node *newNode = makeNode(vertex);
  68.       if(s->head == NULL)
  69.       {
  70.             s->head = newNode;
  71.             s->tail = newNode;
  72.             return;
  73.       }
  74.       s->tail->next = newNode;
  75.       s->tail = newNode;
  76.       return;
  77. }
  78. Node *frontQueue(Queue *q)
  79. {
  80.       if (q->head == NULL)
  81.             return NULL;
  82.       return q->head;
  83. }
  84. Queue *makeQueue()
  85. {
  86.       Queue *q;
  87.       q = (Queue *)malloc(sizeof(Queue));
  88.       q->head = NULL;
  89.       return q;
  90. }
  91. void popQueue(Queue *q)
  92. {
  93.       Node *tmp;
  94.       if (q->head == NULL)
  95.       {
  96.             printf("ERROR QUEUE\n");
  97.             return;
  98.       }
  99.       tmp = q->head;
  100.       q->head = q->head->next;
  101.       free(tmp);
  102. }
  103. void pushQueue(Queue *q, int vertex)
  104. {
  105.       Node *newNode = makeNode(vertex);
  106.       Node *iterator;
  107.       if (q->head == NULL)
  108.       {
  109.             q->head = newNode;
  110.             return;
  111.       }
  112.       iterator = q->head;
  113.       while (iterator->next != NULL)
  114.       {
  115.             iterator = iterator->next;
  116.       }
  117.       iterator->next = newNode;
  118.       return;
  119. }
  120. int main()
  121. {
  122.       int m = 0, n = 0;
  123.       FILE *f;
  124.       f = fopen("data1.txt", "r");
  125.       if (f == NULL)
  126.       {
  127.             printf("ERROR\n");
  128.       }
  129.       else
  130.       {
  131.       fscanf(f, "%d %d", &n, &m);
  132.       }
  133.       int map[n+1][m+1];
  134.       if (f == NULL)
  135.       {
  136.             printf("ERROR\n");
  137.       }
  138.       else
  139.       {
  140.       for(int i = 1; i <= n ; i++){
  141.             for(int j = 1; j <= m ; j++)
  142.             {
  143.                   fscanf(f, "%d", &map[i][j]);
  144.                   printf("map[%d][%d] = %d\n", i,j, map[i][j] );
  145.             }
  146.       }
  147.       }
  148.       int start = 0, end = 0;
  149.       fscanf(f, "%d %d", &start, &end);
  150.       printf("%d %d", start, end);
  151.       fclose(f);
  152.       return 0;
  153. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement