Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Sobre listas simplesmente encadeadas, implemente funções para:
- a. Inserir um elemento ordenado de forma decrescente na lista OK
- b. Excluir um elemento da lista OK
- c. Pesquisar por um determinado elemento da lista OK
- d. Inverter uma lista*/
- /*Bibliotecas*************************************************/
- #include <stdlib.h>
- #include <stdio.h>
- /*Constantes**************************************************/
- #define N 10
- /*Estrutura do No*********************************************/
- typedef struct Node{
- int Num;
- struct Node *Pno;
- }No;
- /*Variaveis****************************************************/
- No *lista;
- No *prim;
- No *prox;
- int qtd,resp,opc;
- No *idPrim;
- No *idProx;
- /*Prototipos***************************************************/
- void Menu();
- void Monitor(int opc);
- No *criar_lista(No *lista);
- void Alocar_primNo(No *lista);
- void Alocar_proxNo(No *lista);
- void Inserir_lista(No *lista);
- void Ordenar_lista(No *lista);
- void Imprimir_lista(No *lista);
- void Gravar_lista(No *lista);
- No *Remover_lista(No *lista);
- void buscar(No *lista);
- /*Função principal********************************************/
- void main(){
- Menu();
- free(lista);
- getchar();
- exit(0);
- }
- /*Menu selecionar prox ação***********************************/
- void Menu(){
- printf("---------------------\n");
- printf("0-Sair do programa : \n");
- printf("1-Inserir na lista : \n");
- printf("2-Imprimir na lista : \n");
- printf("3-Gravar a lista : \n");
- printf("4-Remover da lista : \n");
- printf("5-Ordenar e lista : \n");
- printf("6-Buscar na lista : \n");
- printf("---------------------\n");
- printf("DIGITE SUA ESCOLHA : ");
- scanf("%d",&opc);
- Monitor(opc);
- }
- /*Faz chamada das funções**************************************/
- void Monitor(int opc){
- switch(opc){
- case 0: printf("Obrigado por utilizar nossos programas***");
- exit(1);
- case 1:criar_lista(lista);
- break;
- case 2: Imprimir_lista(lista);
- break;
- case 3: Gravar_lista(lista);
- break;
- case 4: Remover_lista(lista);
- break;
- case 5: Ordenar_lista(lista);
- break;
- case 6: buscar(lista);
- }
- }
- /*Cria a lista**************************************************/
- No *criar_lista(No *lista){
- lista=NULL;
- prox=NULL;
- Alocar_primNo(lista);
- }
- /*Aloca Memoria para primeiro Nó********************************/
- void Alocar_primNo(No *lista){
- prim=(No*)malloc(sizeof(No));//Aloca mémoria para o primeiro nó
- if(prim!=NULL){
- lista=prim;
- prox=prim;
- qtd=1;
- Inserir_lista(lista);//Chama a função para inserir conteúdo no nó
- }
- while(1){
- printf("Deseja continuar ? <1>Sim \\ <Outro valor>Nao : ");
- scanf("%d",&resp);
- if(resp==1)
- Alocar_proxNo(lista);//Chama a função para alocar próximo nó
- else
- if(resp!=1){
- printf("Escolha invalida\n");
- Menu(opc); //retorna ao menu de opções
- break;
- }
- }
- }
- /*Aloca Memoria para no inicio da lista****************************/
- void Alocar_proxNo(No *lista){
- prox->Pno=(No*)malloc(sizeof(No));
- if(prox!=NULL){
- prox=prox->Pno;
- qtd++;
- Inserir_lista(lista);
- }
- }
- /*Inserir conteúdo a lista************************************/
- void Inserir_lista(No *lista){
- if(prim!=NULL){
- printf("%dst\n",qtd);
- printf("Matricula = ");
- scanf("%d",&prox->Num);
- }
- }
- /*Ordenar de forma decrescente a lista***********************/
- void Ordenar_lista(No *lista){No *aux,*aux2;No *troca;
- }
- Menu();
- }
- /*Imprimir a lista*******************************************/
- void Imprimir_lista(No *lista){
- if(prim==NULL){
- printf("Lista vazia\n");
- Menu();
- }
- else
- prox->Pno=NULL;
- prox=prim;
- while(prox!=NULL){
- printf("[Num=%d]",prox->Num);
- prox=prox->Pno;
- }
- printf("Tamanho=%d\n",qtd);
- Menu();
- }
- /*Gravar a lista*********************************************/
- void Gravar_lista(No *lista){
- FILE *REC;
- REC=fopen("desktop.txt","w");
- prox->Pno=NULL;
- prox=prim;
- qtd=0;
- while(prox!=NULL){
- fprintf(REC,"[Num=%d]\n",prox->Num);
- prox=prox->Pno;
- qtd++;
- }
- fprintf(REC,"Tamanho=%d",qtd);
- fclose(REC);
- }
- /*Remover no inicio da lista**********************************/
- No *Remover_lista(No *lista){No *aux;
- prox=prim;
- aux=prim;
- prim=prox->Pno;
- aux=NULL;
- free(aux);
- qtd--;
- Imprimir_lista(lista);
- Menu();
- }
- void buscar(No *lista){int x;
- printf("Digite o valor a ser procurado : ");
- scanf("%d",&x);
- prox=prim;
- while(prox!=NULL){
- if(prox->Num==x){
- printf("ENCONTRADO\n");
- break;
- }
- else
- prox=prox->Pno;
- }
- Menu();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement