Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- typedef long long int cod;
- typedef short int qnt;
- typedef struct listaDeCompras compras;
- struct listaDeCompras{
- cod codigo;
- qnt quantidade;
- compras *proximo;
- };
- compras *alocaNo(){
- compras* no=(compras*)malloc(sizeof(compras));
- return no;
- }
- void insereLista(compras **lista, compras **fimlista, cod codigo, qnt quantidade){
- compras *fim=NULL;
- fim=alocaNo();
- fim->codigo=codigo;
- fim->quantidade=quantidade;
- if((*lista)==NULL){
- fim->proximo=NULL;
- (*lista)=fim;
- (*fimlista)=fim;
- }
- fim->proximo=NULL;
- (*fimlista)->proximo=fim;
- (*fimlista)=fim;
- }
- void removeLista(compras **lista, compras **fimlista){
- compras *aux=*lista, *aux2=*lista;
- aux2=aux2->proximo;
- if(aux2 == NULL){
- *lista=NULL;
- printf("AAAAAAAAAAAAAAAAAAAAA");
- }
- do{
- if(aux2->proximo == NULL)
- aux->proximo = NULL;
- else{
- aux2=aux2->proximo;
- aux=aux->proximo;
- }
- }while(aux2->proximo != NULL);
- (*fimlista)=aux;
- free(aux->proximo);
- aux->proximo = NULL;
- }
- void contaTamanho(compras **lista, cod *cont){
- compras *aux=*lista;
- *cont=1;
- if((*lista)==NULL){
- *cont=0;
- return;
- }
- while(aux->proximo!=NULL){
- aux=aux->proximo;
- (*cont)+=1;
- }
- }
- void imprimeLista(compras **lista){
- compras *aux=*lista;
- if((*lista)==NULL)
- return;
- while(aux!=NULL){
- printf("%lld %hd\n", aux->codigo, aux->quantidade);
- aux=aux->proximo;
- }
- }
- int main(){
- compras *lista=NULL, *fimlista=NULL;
- int escolha;
- cod codigo;
- qnt quantidade;
- char enter;
- do{
- system("clear");
- printf("1 - Inserir na lista\n2 - Remover da lista\n3 - Checar quantidade de Nós\n4 - Ver lista\n5 - sair\n\n");
- setbuf(stdin, NULL);
- scanf("%d", &escolha);
- switch(escolha){
- case 1:{
- printf("\nDigite o codigo do produto: ");
- scanf("%lld", &codigo);
- while(codigo < 0);
- do{
- printf("\n\nDigite a quantidade de produtos: ");
- scanf("%hd", &quantidade);
- }while(quantidade > 65535);
- if(quantidade<0)
- break;
- insereLista(&lista, &fimlista, codigo, quantidade);
- break;
- }
- case 2:{
- if(lista==NULL)
- break;
- else
- if(lista->proximo == NULL){
- free(lista);
- lista==NULL;
- break;
- }else{
- removeLista(&lista, &fimlista);
- break;
- }
- }
- case 3:{
- cod cont=0;
- contaTamanho(&lista, &cont);
- printf("Tamanho da lista = %lld\n", cont);
- break;
- }
- case 4:{
- system("clear");
- if(lista==NULL){
- printf("NaN");
- break;
- }
- imprimeLista(&lista);
- break;
- }
- case 5:{
- exit(0);
- break;
- }
- default:{
- system("clear");
- printf("NaN\n");
- printf("Tecle ENTER para continuar!!!");
- }
- }
- if(escolha == 3 || escolha == 4 || escolha == 6){
- printf("\nTecle ENTER para continuar!!!");
- setbuf(stdin, NULL);
- scanf("%c", &enter);
- }
- }while(escolha!=5);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement