Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Lista .h
- /*
- * Implementacao de listas.
- */
- #ifndef LISTAD_H
- #define LISTAD_H
- typedef int elem_t;
- typedef struct no{
- elem_t info;
- struct no *prox;
- } No_lista;
- typedef No_lista * Lista;
- /* Inicializa uma lista */
- void inicLista(Lista *p_l);
- /* Verifica se a lista está vazia ou nao */
- int listaVazia(Lista *p_l);
- /* Insere um elemento no inicio da lista */
- void insereInicio(Lista *p_l, elem_t e);
- /* Insere um elemento no final da lista */
- void insereFim(Lista *p_l, elem_t e);
- /* Insere um elemento na lista de maneira ordenada.
- Caso a lista nao esteja ordenada, ordena antes da insercao */
- void insereOrdenado(Lista *p_l, elem_t e);
- /* Verifica se a lista esta ordenada */
- int ordenada(Lista *p_l);
- /* Ordena a lista */
- void ordena(Lista *p_l);
- /* Remove o elemento que esta no inicio da lista.
- Retorna 0 caso a lista esteja vazia */
- int removeInicio(Lista *p_l);
- /* Remove o elemento que esta no final da lista.
- Retorna 0 caso a lista esteja vazia */
- int removeFim(Lista *p_l);
- /* Remove o numero de valor e.
- Retorna 0 caso este numero não tenha sido encontrado */
- int removeValor(Lista *p_l, elem_t e);
- /* Inverte os elementos de uma lista */
- void inverte(Lista *p_l);
- /* Remove todos os numeros da lista */
- void libera(Lista *p_l);
- /* Exibe o conteudo da lista */
- void exibe(Lista *p_l);
- #endif
- //Lista.c
- #include "lista.h"
- #include <stdio.h>
- #include <stdlib.h>
- void inicLista(Lista *p_l){
- *p_l=NULL;
- }
- int listaVazia(Lista *p_l){
- if(*p_l==NULL){
- return 1;
- }else{
- return 0;
- }
- }
- void exibe(Lista *p_l)
- {
- No_lista *aux;
- aux=*p_l;
- while(aux!=NULL){
- printf("%d ",aux->info);
- aux=aux->prox;
- }
- }
- /* Insere um elemento na lista de maneira ordenada.
- Caso a lista nao esteja ordenada, ordena antes da insercao */
- void insereOrdenado(Lista *p_l, elem_t e){
- int n,i,j,v[20],aux;
- for(i=1;i<n;i++){
- j=i-1;
- /*while(v[j]<v[j-1]&&j-1>=0){
- aux=v[j-1];
- v[j-1]=v[j];
- v[j]=aux;
- j--;
- }*/
- aux=v[i];
- while(aux<v[j]&&j>=0){
- v[j+1]=v[j];
- j--;
- }
- v[j]=aux;
- }
- }
- /* Verifica se a lista esta ordenada */
- int ordenada(Lista *p_l){}
- /* Ordena a lista */
- void ordena(Lista *p_l){
- No_lista *i,*j,*aux;
- if(!listaVazia(p_l)&&(*p_l)->prox!=NULL){
- i=(*p_l)->prox;
- (*p_l)->prox=NULL;
- while(i!=NULL){
- j=(*p_l);
- if(i->info < j->info){
- (*p_l)=i;
- i=i->prox;
- (*p_l)->prox=j;
- }else{
- while(j->prox!=NULL&&j->prox->info < i->info){
- j=j->prox;
- }
- aux=i;
- i=i->prox;
- aux->prox=j->prox;
- j->prox=aux;
- }
- }
- }
- }
- void insereInicio(Lista *p_l, elem_t e){
- No_lista *novo;
- novo=malloc(sizeof(No_lista));
- novo->info=e;
- novo->prox=*p_l;
- *p_l=novo;
- }
- int removeFim(Lista *p_l){
- No_lista *aux;
- aux=*p_l;
- if(aux==NULL){
- printf("\nLista Vazia");
- return 0;
- }else{
- if(aux->prox==NULL){
- free(aux);
- *p_l=NULL;
- return 1;
- }else{
- while(aux->prox->prox!=NULL){
- aux=aux->prox;
- }
- free(aux->prox);
- aux->prox=NULL;
- return 1;
- }
- }
- }
- int removeInicio(Lista *p_l){
- if(*p_l!=NULL){
- No_lista *aux;
- aux=*p_l;
- *p_l=aux->prox;
- free(aux);
- return 1;
- }else{
- return 0;
- }
- }
- void insereFim(Lista *p_l, elem_t e){
- if(*p_l == NULL){
- insereInicio(p_l,e);
- }else{
- No_lista *novo, *aux;
- novo=malloc(sizeof(No_lista));
- novo->info=e;
- aux=*p_l;
- while(aux->prox!=NULL){
- aux=aux->prox;
- }
- aux->prox=novo;
- novo->prox=NULL;
- }
- }
- void libera(Lista *p_l){
- while(*p_l!=NULL){
- removeInicio(p_l);
- }
- }
- int removeValor(Lista *p_l, elem_t e){
- No_lista *aux,*auxant;
- elem_t *a;
- if(listaVazia(p_l)){
- return 0;
- }
- aux=*p_l;
- auxant=NULL;
- while(aux->prox!=NULL&&aux->info!=e){
- auxant=aux;
- aux=aux->prox;
- }
- if(aux->info==e){
- if(*p_l==aux){
- *p_l=aux->prox;
- }else{
- auxant->prox=aux->prox;
- }
- free(aux);
- return 1;
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment