Guest User

Untitled

a guest
Nov 23rd, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.38 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "stack.h"
  4. #include "queue.h"
  5. #include "mystruct.h"
  6. #define MAX_STATION_PASSENGER (8)
  7. #define MAX_CABLE_CAR_LOAD (300)
  8.  
  9. void SwitchToLast( Queue*);
  10.  
  11. int main(){
  12.  
  13. int input;
  14. int weight = 0;
  15. NodePtr tmp = NULL;
  16. NodePtr q = NULL;
  17. NodePtr h = NULL;
  18.  
  19. Queue queue = NULL;
  20. Queue holdqueue = NULL;
  21.  
  22. while( scanf( "%d", &input) == 1 ){
  23. if( input == -1 ){
  24. while( queue != NULL ){
  25. while( queueSize( queue ) > 8 ){
  26. tmp = createQueueNode( queue->element );
  27. enqueue( tmp, &holdqueue );
  28. tmp = queue;
  29. queue = queue->next;
  30. tmp = NULL;
  31. //printf("END3\n");
  32. }
  33.  
  34. while( weight < 300){
  35.  
  36. if( isQueueEmpty( queue ) )
  37. break;
  38.  
  39. weight += first( queue )->element;
  40.  
  41. if( weight > 300 ){
  42. printf( "\n" );
  43. weight = 0;
  44. break;
  45. }
  46. printf( "%d ", first( queue )->element );
  47. dequeue( &queue );
  48.  
  49. printf("\n");
  50.  
  51. }
  52.  
  53. if( isQueueEmpty( queue ) )
  54. break;
  55.  
  56. SwitchToLast( &queue );
  57.  
  58. while( queueSize( queue ) < 8 ){
  59. if( !isQueueEmpty( holdqueue ) ){
  60. tmp = createQueueNode( first( holdqueue )->element );
  61. enqueue( tmp, &queue);
  62. dequeue( &holdqueue );
  63. tmp = NULL;
  64. }
  65. else{
  66. break;
  67. }
  68. //printf("END1\n");
  69. }
  70. //printf("END\n");
  71. }
  72. puts("\n");
  73. continue;
  74. }
  75.  
  76.  
  77. if( queueSize( queue ) > 8 ){
  78. h = createNode( input );
  79. enqueue( h, &holdqueue);
  80. continue;
  81. }
  82.  
  83. q = createNode( input );
  84. enqueue( q, &queue);
  85. }
  86. return 0;
  87. }
  88.  
  89. void SwitchToLast( Queue* q){
  90. NodePtr tmp = createQueueNode( first( *q )->element );
  91. enqueue( tmp, q);
  92. dequeue( q );
  93. }
Add Comment
Please, Sign In to add comment