Buscar

ListaElementosOrdenadosOK

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

#include<stdio.h>
#include<stdlib.h>
struct Tlista
{
	int ele;
	struct Tlista *next;
};
void Insert(int e, struct Tlista **start)
{
	struct Tlista *p,*aux,*aux2;
	
	
	p=new(struct Tlista);
	
	p->ele=e;
	p->next=NULL;
	
	aux=*start;
	
	if (*start==NULL)			//caso lista vazia
	{
		*start=p;
	}
	else
	{
		if(p->ele<aux->ele)			//caso elemento seja o primeiro
		{
			p->next=aux;
			*start=p;
		}
		else
		{			
			while(p->ele>aux->ele && aux->next!=NULL)	//caso o elemento nao seja o primeiro percorre a lista
			{
				aux2=aux;								//guarda o anterior, quando achar o elemento, volta e insere
				aux=aux->next;
			}
			if(aux->next==NULL && aux->ele<=p->ele)		//caso seja o ultimo elemento
			{
				p->next=NULL;
				aux->next=p;
			}
			else										//caso seja o elemento, e ele esta entre 2 outros elementos
			{
				p->next=aux;
				aux2->next=p;
			}
		
		}
	}
	
}
void Remove(int e, struct Tlista **start)
{
	
	struct Tlista *aux,*aux2;
	
	aux=*start;
	
	if(aux==NULL)					//caso lista vazia
	{
		printf("lista vazia.\n");
	}
	else
	{
		if(e==aux->ele)				//caso seja o primeiro
		{
			*start=aux->next;
			delete(aux);
		}
		else
		{		
			while(aux->ele!=e && aux->next!=NULL)	//caso nao seja o elemento, percorre a lista
			{
				aux2=aux;							//guarda o anterior para linkar o proximo
				aux=aux->next;
			}
			
			if(aux->next==NULL && aux->ele!=e)		//caso nao encontre o elemento
			{
				printf("elemento nao encontrado.\n");
			}
			else
			{
				if(aux->next==NULL)					//caso seja o ultimo elemento
				{
					aux2->next=NULL;
					delete(aux);
				}
				else
				{
					aux2->next=aux->next;			//caso seja o elemento, e ele esta entre 2 outros elementos
					delete(aux);
				}
				printf("elemento deletado.\n");
			}
		}
	}
}
void Print(struct Tlista **start)	
{
	struct Tlista *aux;
	
	aux=*start;
	
	while(aux!=NULL)
	{
		printf("%d - ",aux->ele);
		aux=aux->next;
	}
	
}
main()
{
	struct Tlista *begin=NULL;
	
	int a,b;
	
	while(1)
	{
		system("cls");
		
		printf("1-Insert\n2-Delete\n3-Print\n0-Sair.\n");
		scanf("%d",&a);
		
		system("cls");
		
		if(a==1)
		{
			scanf("%d",&b);
			Insert(b,&begin);
		}
		if(a==2)
		{
			scanf("%d",&b);
			Remove(b,&begin);
			system("pause>>NULL");
		}
		if(a==3)
		{
			Print(&begin);
			system("pause>>NULL");
		}
		
		if(a==0)
		break;
	}
	
}

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando