Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<stdlib.h>
- typedef struct sCelula{
- int info;
- struct sCelula *next;
- }CELULA;
- CELULA* init(CELULA *lista){
- lista = NULL;
- return lista;
- }
- CELULA* getnode(){
- return (CELULA*)malloc(sizeof(CELULA));
- }
- void freenode(CELULA *q){
- free(q);
- }
- int Empty(CELULA *lista){
- if(lista==NULL){
- return 1;
- }
- return 0;
- }
- CELULA* Pesquisa(CELULA *lista, int x){
- CELULA *q;
- if(!Empty(lista)){
- q=lista;
- while(q!=NULL){
- if(q->info==x){
- return q;
- }
- q=q->next;
- }
- }
- return NULL;
- }
- CELULA* Insere_Inicio(CELULA *lista, int x){
- CELULA *q;
- q=getnode();
- if(q!=NULL){
- q->info=x;
- q->next=lista;
- lista=q;
- return lista;
- }else{
- printf("Erro na alocacao");
- return NULL;
- }
- }
- CELULA* Insere_Fim(CELULA *lista, int x){
- CELULA *q;
- CELULA *aux;
- q = getnode();
- if(q!=NULL){
- q->info=x;
- q->next=NULL;
- if(Empty(lista)){
- lista = q;
- }else{
- aux = lista;
- while(aux->next!=NULL){
- aux=aux->next;
- }
- aux->next=q;
- }
- return lista;
- }else{
- printf("Erro na alocação do no.");
- return NULL;
- }
- }
- void Exibe_Lista(CELULA *lista){
- printf("oi1");
- CELULA *aux;
- printf("oi2");
- aux=lista;
- printf("oi3");
- while(aux!=NULL){
- printf("oi4"); //Vai até aqui
- printf("%d ", aux->info);
- printf("oi5");
- aux=aux->next;
- printf("oi6");
- }
- printf("oi7");
- printf("\n");
- printf("oi8");
- }
- CELULA* Remove_Inicio(CELULA *lista){
- printf("oi1");
- CELULA *q;
- printf("oi2");
- q=lista;
- printf("oi3");
- if(!Empty(lista)){
- printf("oi4"); //vai até aqui
- lista=q->next;
- printf("oi5");
- freenode(q);
- printf("o6");
- return lista;
- printf("oi7");
- }else{
- printf("oi8");
- printf("Lista vazia.");
- printf("oi9");
- return NULL;
- printf("oi10");
- }
- printf("oi11");
- }
- CELULA* Remove_Valor(CELULA *lista, int x){
- printf("oi1");
- CELULA *q;
- printf("oi2");
- CELULA *aux;
- printf("oi3"); //só vai até aqui
- if((q=Pesquisa(lista, x))!=NULL){
- printf("oi4");
- aux=lista;
- printf("oi5");
- if(aux==q){
- printf("oi6");
- Remove_Inicio(lista);
- printf("oi7");
- }else{
- printf("oi8");
- while(aux->next!=q){
- printf("oi9");
- aux=aux->next;
- printf("oi10");
- }
- printf("oi11");
- aux->next=q->next;
- printf("oi12");
- freenode(q);
- printf("oi13");
- }
- printf("oi14");
- return lista;
- printf("oi15");
- }
- printf("oi16");
- return NULL;
- printf("oi17");
- }
- int Menu(CELULA *lista){
- int cod, x;
- do{
- printf("\n(1) Inserir elemento no inicio.\n");
- printf("(2) Inserir elemento no fim.\n");
- printf("(3) Remove elemento no inicio.\n");
- printf("(4) Remove elemento ns posicao desejada.\n");
- printf("(5) Exibe elementos.\n");
- scanf("%d", &cod);
- switch(cod){
- case 1:
- printf("Diga qual elemento quer inserir no inicio da lista: ");
- scanf("%d", &x);
- Insere_Inicio(lista, x);
- break;
- case 2:
- printf("Diga qual elemento quer inserir no fim da lista: ");
- scanf("%d", &x);
- Insere_Inicio(lista, x);
- break;
- case 3:
- Remove_Inicio(lista);
- break;
- case 4:
- printf("Diga a posicao do elemento que quer remover: ");
- scanf("%d", &x);
- Remove_Valor(lista, x);
- break;
- case 5:
- Exibe_Lista(lista);
- break;
- }
- }while(cod!=0);
- }
- int main(){
- CELULA *ptrlista;
- init(ptrlista);
- Menu(ptrlista);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement