Advertisement
Guest User

Untitled

a guest
May 5th, 2015
224
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.90 KB | None | 0 0
  1. #include "lista.h"
  2.  
  3. bool listaVazia0(listaPrioridade0 *l0){
  4. return (l0->inicio == NULL) ? true : false;
  5. }
  6. bool listaVazia1(listaPrioridade1 *l1){
  7. return (l1->inicio == NULL) ? true : false;
  8. }
  9. bool listaVazia2(listaPrioridade2 *l2){
  10. return (l2->inicio == NULL) ? true : false;
  11. }
  12. bool listaVazia3(listaPrioridade3 *l3){
  13. return (l3->inicio == NULL) ? true : false;
  14. }
  15.  
  16. void iniciarLista0(listaPrioridade0 *l0){
  17. l0->inicio = l0->fim = NULL;
  18. l0->qtd = 0;
  19. }
  20. void iniciarLista1(listaPrioridade1 *l1){
  21. l1->inicio = l1->fim = NULL;
  22. l1->qtd = 0;
  23. }
  24. void iniciarLista2(listaPrioridade2 *l2){
  25. l2->inicio = l2->fim = NULL;
  26. l2->qtd = 0;
  27. }
  28. void iniciarLista3(listaPrioridade3 *l3){
  29. l3->inicio = l3->fim = NULL;
  30. l3->qtd = 0;
  31. }
  32.  
  33. Processo *getTempoProcesso(int tempoProcessado){
  34. Processo *P = (Processo*)malloc(sizeof(Processo));
  35. if(P != NULL){
  36. P->prox = NULL;
  37. P->tempoProcessado = tempoProcessado;
  38. }
  39. return P;
  40. }
  41. Processo *getPID(){
  42. Processo *P = (Processo*)malloc(sizeof(Processo));
  43. if(P != NULL){
  44. P->prox = NULL;
  45. P->PID = rand() % 10 + 304;
  46. }
  47. return P;
  48. }
  49. Processo *getTempoTotal(int tempoTotal){
  50. Processo *P = (Processo*)malloc(sizeof(Processo));
  51. if(P != NULL){
  52. P->prox = NULL;
  53. P->tempoTotal = tempoTotal;
  54. }
  55. return P;
  56. }
  57.  
  58. void inserirLista0(listaPrioridade0 *l0, int PID, int tempoTotal){
  59. Processo *novo = setProcesso(PID, tempoTotal);
  60. if(novo != NULL){
  61. if(listaVazia0(l0)){
  62. l0->inicio = l0->fim = novo;
  63. novo->prox = l0->inicio;
  64. }else{
  65. l0->fim->prox = novo;
  66. novo->prox = l0->inicio;
  67. l0->fim = novo;
  68. }
  69. l0->qtd++;
  70. }
  71. }
  72. void inserirLista1(listaPrioridade1 *l1, Processo *P){
  73. if(listaVazia1(l1)){
  74. l1->inicio = l1->fim = P;
  75. P->prox = l1->inicio;
  76. }else{
  77. l1->fim->prox = P;
  78. P->prox = l1->inicio;
  79. l1->fim = P;
  80. }
  81. l1->qtd++;
  82. }
  83. void inserirLista2(listaPrioridade2 *l2, Processo *P){
  84. if(listaVazia2(l2)){
  85. l2->inicio = l2->fim = P;
  86. P->prox = l2->inicio;
  87. }else{
  88. l2->fim->prox = P;
  89. P->prox = l2->inicio;
  90. l2->fim = P;
  91. }
  92. l2->qtd++;
  93. }
  94. void inserirLista3(listaPrioridade3 *l3, Processo *P){
  95. if(listaVazia3(l3)){
  96. l3->inicio = l3->fim = P;
  97. P->prox = l3->inicio;
  98. }else{
  99. l3->fim->prox = P;
  100. P->prox = l3->inicio;
  101. l3->fim = P;
  102. }
  103. l3->qtd++;
  104. }
  105.  
  106. Processo *removerLista0(listaPrioridade0 *l0){
  107. Processo *aux = l0->inicio;
  108. if(aux->prox == l0->inicio)
  109. iniciarLista0(l0);
  110. else
  111. l0->inicio = l0->fim->prox = aux->prox;
  112. return aux;
  113. }
  114. Processo *removerLista1(listaPrioridade1 *l1){
  115. Processo *aux = l1->inicio;
  116. if(aux->prox == l1->inicio)
  117. iniciarLista1(l1);
  118. else
  119. l1->inicio = l1->fim->prox = aux->prox;
  120. return aux;
  121. }
  122. Processo *removerLista2(listaPrioridade2 *l2){
  123. Processo *aux = l2->inicio;
  124. if(aux->prox == l2->inicio)
  125. iniciarLista2(l2);
  126. else
  127. l2->inicio = l2->fim->prox = aux->prox;
  128. return aux;
  129. }
  130. Processo *removerLista3(listaPrioridade3 *l3){
  131. Processo *aux = l3->inicio;
  132. if(aux->prox == l3->inicio)
  133. iniciarLista3(l3);
  134. else
  135. l3->inicio = l3->fim->prox = aux->prox;
  136. return aux;
  137. }
  138.  
  139. void imprimir(listaPrioridade0 *l0, listaPrioridade1 *l1, listaPrioridade2 *l2, listaPrioridade3 *l3){
  140. Processo *aux0 = l0->inicio;
  141. Processo *aux1 = l1->inicio;
  142. Processo *aux2 = l2->inicio;
  143. Processo *aux3 = l3->inicio;
  144.  
  145. if(!listaVazia0(l0)){
  146. while(aux0->prox != l0->inicio){
  147. printf("Lista de prioridade 0\n");
  148. printf("PID = [%d] Tempo Total de Excucao = [%d] Tempo já executado = [%d]",aux0->PID, aux0->tempoTotal, aux0->tempoProcessado);
  149. aux0 = aux0->prox;
  150. }
  151. }
  152. if(!listaVazia1(l1)){
  153. while(aux1->prox != l1->inicio){
  154. printf("Lista de prioridade 1\n");
  155. printf("PID = [%d] Tempo Total de Excucao = [%d] Tempo já executado = [%d]",aux1->PID, aux1->tempoTotal, aux1->tempoProcessado);
  156. aux1 = aux1->prox;
  157. }
  158.  
  159. }
  160. if(!listaVazia2(l2)){
  161. while(aux2->prox != l2->inicio){
  162. printf("Lista de prioridade 2\n");
  163. printf("PID = [%d] Tempo Total de Excucao = [%d] Tempo já executado = [%d]",aux2->PID, aux2->tempoTotal, aux2->tempoProcessado);
  164. aux2 = aux2->prox;
  165. }
  166.  
  167. }
  168. if(!listaVazia3(l3)){
  169. while(aux3->prox != l3->inicio){
  170. printf("Lista de prioridade 3\n");
  171. printf("PID = [%d] Tempo Total de Excucao = [%d] Tempo já executado = [%d]",aux3->PID, aux3->tempoTotal, aux3->tempoProcessado);
  172. aux3 = aux3->prox;
  173. }
  174.  
  175. }
  176. }
  177.  
  178. void destruirLista0(listaPrioridade0 *l0){
  179. if(!listaVazia0(l0)){
  180. Processo *atual = l0->inicio, *ant;
  181. while(atual->prox != l0->inicio){
  182. ant = atual;
  183. atual = atual->prox;
  184. free(ant);
  185. }
  186. free(atual);
  187. iniciarLista0(l0);
  188. }
  189. }
  190. void destruirLista1(listaPrioridade1 *l1){
  191. if(!listaVazia1(l1)){
  192. Processo *atual = l1->inicio, *ant;
  193. while(atual->prox != l1->inicio){
  194. ant = atual;
  195. atual = atual->prox;
  196. free(ant);
  197. }
  198. free(atual);
  199. iniciarLista1(l1);
  200. }
  201. }
  202. void destruirLista2(listaPrioridade2 *l2){
  203. if(!listaVazia2(l2)){
  204. Processo *atual = l2->inicio, *ant;
  205. while(atual->prox != l2->inicio){
  206. ant = atual;
  207. atual = atual->prox;
  208. free(ant);
  209. }
  210. free(atual);
  211. iniciarLista2(l2);
  212. }
  213. }
  214. void destruirLista3(listaPrioridade3 *l3){
  215. if(!listaVazia3(l3)){
  216. Processo *atual = l3->inicio, *ant;
  217. while(atual->prox != l3->inicio){
  218. ant = atual;
  219. atual = atual->prox;
  220. free(ant);
  221. }
  222. free(atual);
  223. iniciarLista3(l3);
  224. }
  225. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement