Advertisement
Guest User

Untitled

a guest
Mar 21st, 2018
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.08 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <malloc.h>
  3.  
  4. struct Pilha {
  5. int valor;
  6. struct Pilha *proximaPilha;
  7. };
  8. typedef struct Pilha pilha;
  9.  
  10. /*// variavel para armazenar endereço de memoria de uma lista encadeada*/
  11. pilha *p, *inicio = NULL, *aux, *ultima;
  12. int i = 1;
  13.  
  14. void adicionar(int valor) {
  15. p = (pilha *) malloc(sizeof(pilha));
  16. if (p == NULL) {
  17. printf("\nmemoria cheia.\n");
  18. } else {
  19.  
  20. p->valor = valor;
  21. p->proximaPilha = NULL;
  22. i++;
  23. if (inicio == NULL) {
  24. inicio = p;
  25. } else {
  26. aux = inicio;
  27. while (aux->proximaPilha != NULL) {
  28. aux = inicio->proximaPilha;
  29. }
  30. aux->proximaPilha = p;
  31. }
  32. }
  33. }
  34.  
  35. void adicionar_inicio(int value) {
  36. p = (pilha *) malloc(sizeof(pilha));
  37.     if (p != NULL) {
  38.             p->valor = value;
  39.             p->proximaPilha = NULL;
  40.             i++;
  41.         if(inicio == NULL){
  42.             inicio = p;
  43.         }else{
  44.             p->proximaPilha = inicio;
  45.             inicio = p;
  46.  
  47.         }
  48.     }
  49. }
  50.  
  51.  
  52. void remover_inicio() {
  53.     aux = inicio;
  54.     aux = aux->proximaPilha;
  55.     free(inicio);
  56.     inicio = aux;
  57.     i--;
  58. }
  59.  
  60. void remover_final() {
  61.     aux = inicio;
  62.     while (aux != NULL) {
  63.         if (aux->proximaPilha->proximaPilha == NULL) {
  64.             free(aux->proximaPilha);
  65.             aux->proximaPilha = NULL;
  66.             i--;
  67.         }
  68.         aux = aux->proximaPilha;
  69.     }
  70. }
  71.  
  72. void consultaPorValor(int valor) {
  73.     aux = inicio;
  74.     int j;
  75.     for (j = 0; j < i; ++j) {
  76.         if (valor == aux->valor) {
  77.             printf("\nINDICE DO VALOR %i = %i\n", aux->valor, j);
  78.             break;
  79.         }
  80.         aux = aux->proximaPilha;
  81.     }
  82. }
  83.  
  84. void consultaPorIndice(int indice) {
  85. aux = inicio;
  86. int j;
  87. for (j = 0; j < i; ++j) {
  88. if (indice == j) {
  89. printf("\nVALOR DO INDICE %i = %i\n", j, aux->valor);
  90. break;
  91. }
  92. aux = aux->proximaPilha;
  93. }
  94. }
  95.  
  96. void imprimir() {
  97. aux = inicio;
  98. while (aux != NULL) {
  99. printf("%i - ", aux->valor);
  100. aux = aux->proximaPilha;
  101. }
  102. }
  103.  
  104. void adicionar_index(int indice, int valor) {
  105. p = (pilha *) malloc(sizeof(pilha));
  106. if (p != NULL) {
  107.         p->valor = valor;
  108.         p->proximaPilha = NULL;
  109.         if(inicio == NULL){
  110.             inicio = p;
  111.         }else{
  112.             aux = inicio;
  113.  
  114.             for (int j = 0; j < i; ++j) {
  115.                 if (indice == j) {
  116.                 p->proximaPilha = aux->proximaPilha;
  117.                 aux->proximaPilha = p;
  118.                 i++;
  119.                 break;
  120.                 }
  121.                 aux = aux->proximaPilha;
  122.             }
  123.  
  124.         }
  125. }
  126.  
  127.  
  128. }
  129.  
  130. /* void remover_index(){}*/
  131.  
  132. int main() {
  133. int resp;
  134. int valor;
  135. do {
  136. printf("1. Adicionar_direita\n");
  137. printf("2. Adicionar_esquerda\n");
  138. printf("3. Adicionar_indice\n");
  139. printf("4. Remover_inicio\n");
  140. printf("5. Remover_final\n");
  141. printf("6. Remover_indice\n");
  142. printf("7. Consultar_valor\n");
  143. printf("8. Consultar_indice\n");
  144. printf("9. Imprimir\n");
  145. printf("10. Sair\n");
  146. printf("Escolha uma das opcoes acima: ");
  147. scanf("%i", &resp);
  148.  
  149. switch(resp){
  150. case 1:
  151. printf("\nInforme o valor a ser adicionado: ");
  152. scanf("%i", &valor);
  153. adicionar(valor);
  154. printf("\nValor adicionado com sucesso.\n\n");
  155. break;
  156. case 2:
  157. printf("\nInforme o valor a ser adicionado: ");
  158. scanf("%i", &valor);
  159. adicionar_inicio(valor);
  160. printf("\nValor adicionado com sucesso.\n\n");
  161. break;
  162. case 3:
  163. printf("\nInforme o valor a ser adicionado: ");
  164. scanf("%i", &valor);
  165. printf("\nInforme o indice: ");
  166. int indice;
  167. scanf("%i", &indice);
  168. adicionar_index(indice, valor);
  169. printf("\nValor adicionado com sucesso.\n\n");
  170. break;
  171. case 4:
  172. remover_inicio();
  173. printf("\nValor no inicio removido com sucesso!\n\n");
  174. break;
  175. case 5:
  176. remover_final();
  177. printf("\nValor no final removido com sucesso!\n\n");
  178. break;
  179. case 6:
  180. printf("\nainda falta colocar\n");
  181. break;
  182. case 7:
  183. printf("\nInforme o valor a ser consultado: ");
  184. scanf("%i", &valor);
  185. consultaPorValor(valor);
  186. break;
  187. case 8:
  188. printf("\nInforme o indice a ser consultado: ");
  189. scanf("%i", &valor);
  190. consultaPorIndice(valor);
  191. break;
  192. case 9:
  193. printf("\n#########IMPRIMIR#########\n");
  194. imprimir();
  195. printf("\n\n");
  196. break;
  197. }
  198.  
  199.  
  200. } while (resp != 10);
  201.  
  202.  
  203. return 0;
  204. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement