Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
- struct st_next
- {
- int id;
- char name[100];
- struct st_next *nextI;
- struct st_next *nextS;
- };
- typedef struct st_next no;
- int vazio (no * readerS, no * readerI)
- {
- if((readerI->nextI = NULL)&&(readerS->nextS = NULL))
- {
- return 1;
- }else
- {
- return 0;
- }
- }
- void initial (no * readerS, no * readerI)
- {
- readerI->nextI = NULL;
- readerS->nextS = NULL;
- }
- void freeUsage(no * readerS, no * readerI)
- {
- if(!vazio(readerS,readerI))
- {
- no *proxEl,*proxN, *atualI,*atualS;
- atualI = readerI->nextI;
- atualS = readerS->nextS;
- while((atualI != NULL)&&(atualS != NULL))
- {
- proxEl = atualI->nextI;
- free(atualI);
- atualI = proxEl;
- proxN = atualS->nextS;
- free(atualS);
- atualS = proxN;
- }
- }
- }
- void showList (no * readerS , no * readerI)
- {
- int cont;
- if(!vazio(readerS,readerI))
- {
- printf("Primeiro adicione algum elemento na lista\n");
- exit(1);
- }
- no *tmpI, *tmpS;
- tmpS = readerS->nextS;
- tmpI = readerI->nextI;
- while((tmpI != NULL)&&(tmpS != NULL))
- {
- printf("Nome:%s\n",tmpS->name);
- tmpS = tmpS ->nextS;
- printf("Idade:%d\n",tmpI->id);
- tmpI = tmpI->nextI;
- }
- }
- void adicionaInicio (no * readerS, no * readerI)
- {
- int cont;
- char **tempNam;
- tempNam = malloc (1 * sizeof (int));
- no *novoElI = (no*)malloc(sizeof(no));
- no *novoElS = (no*)malloc(sizeof(char));
- fflush(stdin);
- if((!novoElI)&&(!novoElS))
- {
- printf("Sem espaço! Libere um pouco antes de executar\n");
- exit(1);
- }
- for(cont = 0;cont < 1;cont++)
- {
- printf("Adicione o elemento\n");
- tempNam[cont] = malloc(100);
- fgets(tempNam[cont],100,stdin);
- strcpy(&novoElS->name[cont],tempNam[cont]);
- }
- printf("De a idade do elemento\n");
- scanf("%d",&novoElI->id);
- no * velhoTopI = readerI->nextI;
- readerI->nextI = novoElI;
- novoElI->nextI = velhoTopI;
- no *velhoTopS = readerS ->nextS;
- readerS->nextS = novoElS;
- novoElS->nextS = velhoTopS;
- }
- void adicionaFim (no * readerS, no * readerI)
- {
- int cont;
- char **tempNam;
- tempNam = malloc (1 * sizeof (int));
- no *novoElI = (no*)malloc(sizeof(no));
- no *novoElS = (no*)malloc(sizeof(char));
- if((!novoElI)&&(!novoElS))
- {
- printf("Sem memoria disponivel\n");
- exit(1);
- }
- fflush(stdin);
- for(cont = 0; cont < 1;cont++)
- {
- printf("Adicione o elemento do fim\n");
- tempNam[cont] = malloc(100);
- fgets(tempNam[cont],100,stdin);
- strcpy(&novoElS->name[cont],tempNam[cont]);
- }
- printf("De a idade do elemento\n");
- scanf("%d",&novoElS->id);
- novoElI->nextI = NULL;
- novoElS->nextS = NULL;
- if(!vazio(readerS,readerI))
- {
- readerI->nextI = novoElI;
- readerS->nextS = novoElS;
- }else
- {
- no *tmpI = readerI->nextI;
- no *tmpS = readerS->nextS;
- while((tmpI->nextI != NULL)&&(tmpS->nextS != NULL))
- {
- tmpI = tmpI->nextI;
- tmpS = tmpS->nextS;
- }
- tmpI->nextI = novoElI;
- tmpS->nextS = novoElS;
- }
- }
- int userInterface()
- {
- system("Cls");
- int opt;
- printf("----------|Menu|--------------\n");
- printf("[1] - Adicionar um elemento no inicio da lista\n");
- printf("[2] - Adicionar um elemento no fim da lista\n");
- printf("[3] - Imprimir elementos na tela\n");
- printf("[4] - Terminar programa\n");
- printf("Sua opcao: ");
- scanf("%d",&opt);
- return opt;
- }
- void choosenOne (no * readerS,no * readerI, int opt)
- {
- switch(opt)
- {
- case 1:
- adicionaInicio(readerS,readerI);
- break;
- case 2:
- adicionaFim(readerS,readerI);
- break;
- case 3:
- showList(readerS,readerI);
- system("PAUSE");
- break;
- case 4:
- printf("Fechando o programa!\n");
- freeUsage(readerS,readerI);
- break;
- default:
- printf("Opcao invalida,por favor escolha uma opcao valida\n");
- break;
- }
- }
- int main ()
- {
- int opcao;
- no * readerS = (no*) malloc(sizeof(no));
- no * readerI = (no*) malloc(sizeof(no));
- initial(readerS,readerI);
- do
- {
- opcao = userInterface();
- choosenOne(readerS,readerI,opcao);
- }while(opcao != 4);
- free(readerS);
- free(readerI);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment