Advertisement
Alan_Cesar

Lista Encadeada

Aug 22nd, 2016
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.65 KB | None | 0 0
  1. /*Sobre listas simplesmente encadeadas, implemente funções para:
  2. a. Inserir um elemento ordenado de forma decrescente na lista OK
  3. b. Excluir um elemento da lista OK
  4. c. Pesquisar por um determinado elemento da lista OK
  5. d. Inverter uma lista*/
  6.  
  7.  
  8. /*Bibliotecas*************************************************/
  9. #include <stdlib.h>
  10. #include <stdio.h>
  11. /*Constantes**************************************************/
  12. #define N 10
  13. /*Estrutura do No*********************************************/
  14. typedef struct Node{
  15. int Num;
  16. struct Node *Pno;
  17. }No;
  18. /*Variaveis****************************************************/
  19. No *lista;
  20. No *prim;
  21. No *prox;
  22. int qtd,resp,opc;
  23. No *idPrim;
  24. No *idProx;
  25. /*Prototipos***************************************************/
  26. void Menu();
  27. void Monitor(int opc);
  28. No *criar_lista(No *lista);
  29. void Alocar_primNo(No *lista);
  30. void Alocar_proxNo(No *lista);
  31. void Inserir_lista(No *lista);
  32. void Ordenar_lista(No *lista);
  33. void Imprimir_lista(No *lista);
  34. void Gravar_lista(No *lista);
  35. No *Remover_lista(No *lista);
  36. void buscar(No *lista);
  37. /*Função principal********************************************/
  38. void main(){
  39.  
  40. Menu();
  41. free(lista);
  42. getchar();
  43. exit(0);
  44. }
  45. /*Menu selecionar prox ação***********************************/
  46. void Menu(){
  47. printf("---------------------\n");
  48. printf("0-Sair do programa : \n");
  49. printf("1-Inserir na lista : \n");
  50. printf("2-Imprimir na lista : \n");
  51. printf("3-Gravar a lista : \n");
  52. printf("4-Remover da lista : \n");
  53. printf("5-Ordenar e lista : \n");
  54. printf("6-Buscar na lista : \n");
  55. printf("---------------------\n");
  56. printf("DIGITE SUA ESCOLHA : ");
  57. scanf("%d",&opc);
  58. Monitor(opc);
  59. }
  60. /*Faz chamada das funções**************************************/
  61. void Monitor(int opc){
  62. switch(opc){
  63. case 0: printf("Obrigado por utilizar nossos programas***");
  64. exit(1);
  65. case 1:criar_lista(lista);
  66. break;
  67. case 2: Imprimir_lista(lista);
  68. break;
  69. case 3: Gravar_lista(lista);
  70. break;
  71. case 4: Remover_lista(lista);
  72. break;
  73. case 5: Ordenar_lista(lista);
  74. break;
  75. case 6: buscar(lista);
  76. }
  77. }
  78. /*Cria a lista**************************************************/
  79. No *criar_lista(No *lista){
  80. lista=NULL;
  81. prox=NULL;
  82. Alocar_primNo(lista);
  83. }
  84. /*Aloca Memoria para primeiro Nó********************************/
  85. void Alocar_primNo(No *lista){
  86. prim=(No*)malloc(sizeof(No));//Aloca mémoria para o primeiro nó
  87. if(prim!=NULL){
  88. lista=prim;
  89. prox=prim;
  90. qtd=1;
  91. Inserir_lista(lista);//Chama a função para inserir conteúdo no nó
  92. }
  93. while(1){
  94. printf("Deseja continuar ? <1>Sim \\ <Outro valor>Nao : ");
  95. scanf("%d",&resp);
  96. if(resp==1)
  97. Alocar_proxNo(lista);//Chama a função para alocar próximo nó
  98. else
  99. if(resp!=1){
  100. printf("Escolha invalida\n");
  101. Menu(opc); //retorna ao menu de opções
  102. break;
  103. }
  104. }
  105. }
  106. /*Aloca Memoria para no inicio da lista****************************/
  107. void Alocar_proxNo(No *lista){
  108. prox->Pno=(No*)malloc(sizeof(No));
  109. if(prox!=NULL){
  110. prox=prox->Pno;
  111. qtd++;
  112. Inserir_lista(lista);
  113. }
  114. }
  115. /*Inserir conteúdo a lista************************************/
  116. void Inserir_lista(No *lista){
  117. if(prim!=NULL){
  118. printf("%dst\n",qtd);
  119. printf("Matricula = ");
  120. scanf("%d",&prox->Num);
  121. }
  122. }
  123. /*Ordenar de forma decrescente a lista***********************/
  124. void Ordenar_lista(No *lista){No *aux,*aux2;No *troca;
  125.  
  126. }
  127. Menu();
  128. }
  129. /*Imprimir a lista*******************************************/
  130. void Imprimir_lista(No *lista){
  131. if(prim==NULL){
  132. printf("Lista vazia\n");
  133. Menu();
  134. }
  135. else
  136. prox->Pno=NULL;
  137. prox=prim;
  138. while(prox!=NULL){
  139. printf("[Num=%d]",prox->Num);
  140. prox=prox->Pno;
  141. }
  142. printf("Tamanho=%d\n",qtd);
  143. Menu();
  144. }
  145. /*Gravar a lista*********************************************/
  146. void Gravar_lista(No *lista){
  147. FILE *REC;
  148. REC=fopen("desktop.txt","w");
  149. prox->Pno=NULL;
  150. prox=prim;
  151. qtd=0;
  152. while(prox!=NULL){
  153. fprintf(REC,"[Num=%d]\n",prox->Num);
  154. prox=prox->Pno;
  155. qtd++;
  156. }
  157. fprintf(REC,"Tamanho=%d",qtd);
  158. fclose(REC);
  159. }
  160. /*Remover no inicio da lista**********************************/
  161. No *Remover_lista(No *lista){No *aux;
  162.  
  163. prox=prim;
  164. aux=prim;
  165. prim=prox->Pno;
  166. aux=NULL;
  167. free(aux);
  168. qtd--;
  169. Imprimir_lista(lista);
  170. Menu();
  171. }
  172. void buscar(No *lista){int x;
  173.  
  174. printf("Digite o valor a ser procurado : ");
  175. scanf("%d",&x);
  176. prox=prim;
  177. while(prox!=NULL){
  178. if(prox->Num==x){
  179. printf("ENCONTRADO\n");
  180. break;
  181. }
  182. else
  183. prox=prox->Pno;
  184. }
  185. Menu();
  186.  
  187. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement