c_cpp App para estudo de listas simplesmente encadeadas

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp App para estudo de listas simplesmente encadeadas相关的知识,希望对你有一定的参考价值。

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

typedef struct No{
	int conteudo;
	struct No *prox;
}no;

no *aloca(){
	no *novo=(no *) malloc(sizeof(no));
	if(!novo){
		printf("Sem memoria disponivel!\n");
		exit(1);
	}else{
		printf("Novo elemento: "); scanf("%d", &novo->conteudo);
		return novo;
	}
}

void inicia(no *LISTA){
	LISTA->prox = NULL;
}

void inserirInicio(no *LISTA){
	no *novo = aloca(), *velhaCabeca;
	velhaCabeca = LISTA->prox;
	LISTA->prox = novo;
	novo->prox = velhaCabeca;
}

void inserirFim(no *LISTA){	
	no *novo = aloca();
	novo->prox = NULL;
	no *temp = LISTA->prox;
	while(temp->prox != NULL)
	{
		temp = temp->prox;
	}
	temp->prox = novo;	
}

no *retiraInicio(no *LISTA){
	no *temp = LISTA->prox;
	LISTA->prox = temp->prox;	
	return temp;
}

no *retiraFinal(no *LISTA){
	no *ultimo = LISTA->prox;
	no *penultimo = LISTA;
	while(ultimo->prox != NULL)
	{
		penultimo = ultimo;
		ultimo = ultimo->prox;
	}
	penultimo->prox = NULL;
	return ultimo;
}

void exibir(no *LISTA){
	no *temp = LISTA->prox;
	if(temp == NULL){
		printf("Lista vazia\n");
	}else{
		while(temp != NULL)
		{
			printf("%d ", temp->conteudo);
			temp = temp->prox;
		}
	}	
}

int opcao(){
	int resp;
	printf("Digite uma opcao: ");
	scanf("%d", &resp);
	return resp;
}

int menu(no *LISTA){
	no *temp;
	system("cls");
	printf("1 - Incluir no inicio\n");
	printf("2 - Incluir no final\n");
	printf("3 - Listar\n");
	printf("4 - Retirar do final\n");
	printf("5 - Retirar do inicio\n");
	printf("6 - Sair\n");
	int resp = opcao();
	
	switch(resp)
		{
		case 1:
			inserirInicio(LISTA);
			break;
		case 2:
			inserirFim(LISTA);
			break;
		case 3:
			printf("Lista: ");
			exibir(LISTA);
			getch();
			break;
		case 4:
			temp = retiraFinal(LISTA);			
			printf("Retira ultimo: %d\n", temp->conteudo);
			getch();
			break;
		case 5:
			temp = retiraInicio(LISTA);
			printf("Retira primeiro: %d\n", temp->conteudo);
			getch();
			break;
		case 6:
			return 1;
		default:
			printf("Opcao invalida!\n");
			break;
		}
		
		return 0;
}

int main(int argc, char** argv)
{
	no *LISTA = (no*)malloc(sizeof(no));
	inicia(LISTA);
	
	while(1)
	{		
 	   	if(menu(LISTA) == 1)
				break;						
	}
		
	//exibir(LISTA);	
	/*/inserirInicio(LISTA);
	inserirInicio(LISTA);
	inserirInicio(LISTA);
	exibir(LISTA);printf("\n");
	printf("INSEIR NO FIM\n");
	inserirFim(LISTA);
	inserirFim(LISTA);
	exibir(LISTA); printf("\n");
	no *ret = retiraInicio(LISTA);
	printf("Retirado do inicio: %d\n", ret->conteudo);
	
	ret = retiraFinal(LISTA);
	printf("Retirado do final: %d\n", ret->conteudo);
	
	exibir(LISTA);*/
	
	return 0;
}

以上是关于c_cpp App para estudo de listas simplesmente encadeadas的主要内容,如果未能解决你的问题,请参考以下文章

java Estudo de leitura e escrita em arquivos em Java - bytes e strings

java Filtro para controle de cache de resources para Servlets 2.3+(Websphere 5+)

java Filtro para controle de cache de resources para Servlets 2.3+(Websphere 5+)

java Filtro para controle de cache de resources para Servlets 2.3+(Websphere 5+)

c_cpp Ahorra tiempo para compilar c ++

c_cpp dns-block.c para spotify