Closed waldeyr closed 5 years ago
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// Define o tipo No contendo
typedef struct No {
int dado;
struct No *prox;
} No;
//lambida calculo
void printFormat01(No* ponteiroNo);
void printFormat02(No* ponteiroNo);
//Define o ultimo No da lista
No* ponteiroFinal = NULL;
//Funcao que adiciona dados
void adicionarDado(int dado) {
No* ponteiroNo;
ponteiroNo = (No *) malloc(sizeof (ponteiroNo));
ponteiroNo->dado = dado;
ponteiroNo->prox = NULL;
if (ponteiroFinal == NULL)
ponteiroFinal = ponteiroNo;
else {
ponteiroNo->prox = ponteiroFinal;
ponteiroFinal = ponteiroNo;
}
}
//Funcao que imprime a lista
void imprimirLista() {
No* ponteiroNo;
if (ponteiroFinal == NULL) {
printf("Lista vazia.\n");
return;
}
ponteiroNo = ponteiroFinal;
while (ponteiroNo != NULL) {
if (ponteiroNo->prox != NULL) {
printFormat01(ponteiroNo);
} else {
printFormat02(ponteiroNo);
}
ponteiroNo = ponteiroNo->prox;
}
}
void printFormat01(No* ponteiroNo) {
printf("[%d(%p)|%p]\n", ponteiroNo->dado, ponteiroNo, ponteiroNo->prox);
printf(" |\n");
printf(" V\n");
printf(" -------------\n");
printf(" |\n");
printf(" V\n");
}
void printFormat02(No* ponteiroNo) {
printf("[%d(%p)|%p]\n", ponteiroNo->dado, ponteiroNo, ponteiroNo->prox);
printf(" |\n");
printf(" V\n");
printf(" NULL\n");
}
void buscarDado(int dado) {
No* ponteiroNo;
if (ponteiroFinal == NULL) {
printf("Lista vazia.\n");
return;
}
ponteiroNo = ponteiroFinal;
while (ponteiroNo != NULL) {
if (ponteiroNo->dado == dado)
printf("[%d(%p)]\n", ponteiroNo->dado, ponteiroNo);
ponteiroNo = ponteiroNo->prox;
}
}
void removerDado(int dado) {
No *ponteiroNo, *ponteiroAnterior;
if (ponteiroFinal == NULL) {// lista vazia
return;
} else { // lista NAO vazia
ponteiroNo = ponteiroFinal;
ponteiroAnterior = ponteiroFinal;
while (ponteiroNo != NULL) {
if (ponteiroNo->dado == dado) {
ponteiroFinal->prox = ponteiroNo->prox;
ponteiroFinal = ponteiroFinal->prox;
free(ponteiroNo); // libera memoria
return;
}
else { // continua procurando na lista
ponteiroAnterior = ponteiroNo;
ponteiroNo = ponteiroNo->prox;
}
}
return;
}
}
void main() {
// Insere na lista os numeros de 1 a 3
for (int i = 1; i <= 4; i++)
adicionarDado(i);
imprimirLista();
removerDado(1);
printf("--------------\n");
imprimirLista();
//buscarDado(3);
}
// Samuel Sergio Garcia Espinosa
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// Define o tipo No contendo
typedef struct No{
int dado;
struct No *prox;
} No;
void printFormat01(No* ponteiroNo);
void printFormat02(No* ponteiroNo);
//Define o ultimo No da lista
No* ponteiroFinal = NULL;
//Funcao que adiciona dados
void adicionarDado(int dado) {
No* ponteiroNo;
ponteiroNo = (No *) malloc(sizeof (ponteiroNo));
ponteiroNo->dado = dado;
ponteiroNo->prox = NULL;
if (ponteiroFinal == NULL)
ponteiroFinal = ponteiroNo;
else {
ponteiroNo->prox = ponteiroFinal;
ponteiroFinal = ponteiroNo;
}
}
//Funcao que imprime a lista
void imprimirLista() {
No* ponteiroNo;
if (ponteiroFinal == NULL) {
printf("Lista vazia.\n");
return;
}
ponteiroNo = ponteiroFinal;
while (ponteiroNo != NULL) {
if (ponteiroNo->prox !=NULL){
printFormat01(ponteiroNo);
}else{
printFormat02(ponteiroNo);
}
ponteiroNo = ponteiroNo->prox;
}
}
void printFormat01(No* ponteiroNo){
printf("[%d(%p)|%p]\n", ponteiroNo->dado, ponteiroNo, ponteiroNo->prox);
printf(" |\n");
printf(" V\n");
printf(" -------------\n");
printf(" |\n");
printf(" V\n");
}
void printFormat02(No* ponteiroNo){
printf("[%d(%p)|%p]\n", ponteiroNo->dado, ponteiroNo, ponteiroNo->prox);
printf(" |\n");
printf(" V\n");
printf(" NULL\n");
}
void buscarDado(int dado){
No* ponteiroNo;
if (ponteiroFinal == NULL) {
printf("Lista vazia.\n");
return;
}
ponteiroNo = ponteiroFinal;
while (ponteiroNo != NULL) {
if (ponteiroNo->dado == dado)
printf("[%d(%p)]\n", ponteiroNo->dado, ponteiroNo);
ponteiroNo = ponteiroNo->prox;
}
}
void removerDado(int dado) {
No *ponteiroNo, *ponteiroAnterior;
if (ponteiroFinal == NULL) {// lista vazia
return;
} else { // lista NAO vazia
ponteiroNo = ponteiroFinal;
ponteiroAnterior = ponteiroFinal;
while (ponteiroNo != NULL) {
if (ponteiroNo->dado == dado){
if (ponteiroNo == ponteiroFinal){// removendo o primeiro
ponteiroFinal = ponteiroFinal->prox;
free(ponteiroNo);// libera memoria
return;
}
else{ // removendo do meio
ponteiroAnterior->prox = ponteiroNo->prox;//refaz links
free(ponteiroNo);// libera memoria
return;
}
}
else{ // continua procurando na lista
ponteiroAnterior = ponteiroNo;
ponteiroNo = ponteiroNo->prox;
}
}
return;
}
}
void removerDadoFila(int dado)
{
No *ponteiroNo, *ponteiroAnterior;
No *ponteiroPrimeiro;
int dadoRemovido = 0;
int existe = 0;
if (ponteiroFinal == NULL) // lista vazia
return;
else // lista NAO vazia
{
ponteiroNo = ponteiroFinal;
ponteiroAnterior = ponteiroFinal;
// While para conferir se o dado existe
while(ponteiroNo != NULL && existe == 0)
{
if(ponteiroNo->dado == dado )
existe = 1;
else
ponteiroNo = ponteiroNo->prox;
}
if(existe == 1)
{
ponteiroNo = ponteiroFinal;
// While para salvar o primeiro e o segundo ponteiro
while( ponteiroNo != NULL )
{
if( ponteiroNo->prox == NULL )
ponteiroPrimeiro = ponteiroNo;
else
{
ponteiroNo = ponteiroNo->prox;
ponteiroAnterior = ponteiroNo;
}
}
// While para apagar os dados ate achar o NO onde contem o dado procurado
while(dadoRemovido == 0)
{
if( ponteiroPrimeiro->dado == dado )
{
free(ponteiroPrimeiro);
dadoRemovido = 1;
}
else
{
free(ponteiroPrimeiro);
ponteiroPrimeiro = ponteiroAnterior;
ponteiroPrimeiro->prox == NULL;
ponteiroNo = ponteiroFinal;
// While para determinar o novo SEGUNDO ponteiro
while( ponteiroNo != ponteiroPrimeiro )
{
ponteiroNo = ponteiroNo->prox;
ponteiroAnterior = ponteiroNo;
}
}
}
}
return;
}
}
void removerDadoPilha(int dado)
{
No *ponteiroNo, *ponteiroARemover;
int dadoRemovido = 0;
int existe = 0;
if (ponteiroFinal == NULL) // lista vazia
return;
else
{
ponteiroNo = ponteiroFinal;
// While para conferir se o dado existe
while(ponteiroNo != NULL && existe == 0)
{
if(ponteiroNo->dado == dado )
existe = 1;
else
ponteiroNo = ponteiroNo->prox;
}
if(existe == 1)
{
ponteiroNo = ponteiroFinal;
while( dadoRemovido == 0 )
{
if( ponteiroNo->dado == dado )
{
free(ponteiroNo);
dadoRemovido = 1;
}
else
{
ponteiroARemover = ponteiroNo;
ponteiroNo = ponteiroNo->prox;
free(ponteiroARemover);
}
}
}
return;
}
}
void main() {
// Insere na lista os numeros de 1 a 3
for (int i = 1; i <= 4; i++)
adicionarDado(i);
imprimirLista();
removerDado(2);
printf("--------------\n");
imprimirLista();
buscarDado(3);
}
//Thays Correia
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// Define o tipo No contendo
typedef struct No {
int dado;
struct No *prox;
} No;
void printFormat01(No* ponteiroNo);
void printFormat02(No* ponteiroNo);
//Define o ultimo No da lista
No* ponteiroFinal = NULL;
No *ponteiroNo, *ponteiroAnterior;
//Funcao que adiciona dados
void adicionarDado(int dado) {
ponteiroNo = (No *) malloc(sizeof (ponteiroNo));
ponteiroNo->dado = dado;
ponteiroNo->prox = NULL;
if (ponteiroFinal == NULL)
ponteiroFinal = ponteiroNo;
else {
ponteiroNo->prox = ponteiroFinal;
ponteiroFinal = ponteiroNo;
}
}
//Funcao que imprime a lista
void imprimirLista() {
if (ponteiroFinal == NULL) {
printf("Lista vazia.\n");
return;
}
ponteiroNo = ponteiroFinal;
while (ponteiroNo != NULL) {
if (ponteiroNo->prox != NULL) {
printFormat01(ponteiroNo);
} else {
printFormat02(ponteiroNo);
}
ponteiroNo = ponteiroNo->prox;
}
}
void printFormat01(No* ponteiroNo) {
printf("[%d(%p)|%p]\n", ponteiroNo->dado, ponteiroNo, ponteiroNo->prox);
printf(" |\n");
printf(" V\n");
printf(" -------------\n");
printf(" |\n");
printf(" V\n");
}
void printFormat02(No* ponteiroNo) {
printf("[%d(%p)|%p]\n", ponteiroNo->dado, ponteiroNo, ponteiroNo->prox);
printf(" |\n");
printf(" V\n");
printf(" NULL\n");
}
void buscarDado(int dado) {
if (ponteiroFinal == NULL) {
printf("Lista vazia.\n");
return;
}
ponteiroNo = ponteiroFinal;
while (ponteiroNo != NULL) {
if (ponteiroNo->dado == dado)
printf("[%d(%p)]\n", ponteiroNo->dado, ponteiroNo);
ponteiroNo = ponteiroNo->prox;
}
}
void removerDado(int dado) {
if (ponteiroFinal == NULL) {// lista vazia
return;
} else { // lista NAO vazia
ponteiroNo = ponteiroFinal;
ponteiroAnterior = ponteiroFinal;
while (ponteiroNo != NULL) {
if (ponteiroNo->dado == dado) {
ponteiroFinal->prox = ponteiroNo->prox; //refaz links
ponteiroFinal = ponteiroFinal->prox;
free(ponteiroNo); // libera memoria
}
else {
ponteiroAnterior = ponteiroNo;
ponteiroNo = ponteiroNo->prox;
}
}
return;
}
}
void main() {
// Insere na lista os numeros de 1 a 3
for (int i = 1; i <= 4; i++)
adicionarDado(i);
imprimirLista();
removerDado(1);
printf("--------------\n");
imprimirLista();
}
//Joyce Braga Silva de Jesus
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// Define o tipo No contendo
typedef struct No{
int dado;
struct No *prox;
} No;
void printFormat01(No* ponteiroNo);
void printFormat02(No* ponteiroNo);
//Define o ultimo No da lista
No* ponteiroFinal = NULL;
No* ponteiroAnterior = NULL;
No* ponteiroNo = NULL;
//Funcao que adiciona dados
void adicionarDado(int dado) {
ponteiroNo = (No *) malloc(sizeof (ponteiroNo));
ponteiroNo->dado = dado;
ponteiroNo->prox = NULL;
if (ponteiroFinal == NULL)
ponteiroFinal = ponteiroNo;
else {
ponteiroNo->prox = ponteiroFinal;
ponteiroFinal = ponteiroNo;
}
}
//Funcao que imprime a lista
void imprimirLista() {
if (ponteiroFinal == NULL) {
printf("Lista vazia.\n");
return;
}
ponteiroNo = ponteiroFinal;
while (ponteiroNo != NULL) {
if (ponteiroNo->prox !=NULL){
printFormat01(ponteiroNo);
}else{
printFormat02(ponteiroNo);
}
ponteiroNo = ponteiroNo->prox;
}
}
void printFormat01(No* ponteiroNo){
printf("[%d(%p)|%p]\n", ponteiroNo->dado, ponteiroNo, ponteiroNo->prox);
printf(" |\n");
printf(" V\n");
printf(" -------------\n");
printf(" |\n");
printf(" V\n");
}
void printFormat02(No* ponteiroNo){
printf("[%d(%p)|%p]\n", ponteiroNo->dado, ponteiroNo, ponteiroNo->prox);
printf(" |\n");
printf(" V\n");
printf(" NULL\n");
}
void buscarDado(int dado){
if (ponteiroFinal == NULL) {
printf("Lista vazia.\n");
return;
}
ponteiroNo = ponteiroFinal;
while (ponteiroNo != NULL) {
if (ponteiroNo->dado == dado)
printf("[%d(%p)]\n", ponteiroNo->dado, ponteiroNo);
ponteiroNo = ponteiroNo->prox;
}
}
void removerPilha(int dado) {
if (ponteiroFinal == NULL) {// lista vazia
return;
} else { // lista NAO vazia
ponteiroNo = ponteiroFinal;
ponteiroAnterior = ponteiroFinal;
while (ponteiroNo != NULL) {
if (ponteiroNo->dado == dado){
ponteiroFinal->prox = ponteiroFinal->prox;
ponteiroFinal = ponteiroFinal->prox;
free(ponteiroNo);// libera memoria
return;
}
else{ // continua procurando na lista
ponteiroAnterior = ponteiroNo;
ponteiroNo = ponteiroNo->prox;
}
}
return;
}
}
void main() {
// Insere na lista os numeros de 1 a 3
for (int i = 1; i <= 4; i++)
adicionarDado(i);
imprimirLista();
removerPilha(2);
printf("--------------\n");
imprimirLista();
buscarDado(3);
}
//aluno: Samuel Amaro Do Nascimento
/*EXEMPLO DE CODIGO DO PROFESSOR,DEMOSTRANDO COMO FUNCIONA UMA LISTA SIMPLES ENCADEADA , Estrutura de Dados*/
//IMPLEMETA UMA LISTA DO TIPO PILHA NA FUNÇÃO REMOVE NO
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// Define o tipo No contendo
typedef struct No{
int dado;
struct No *prox;
} No;
void printFormat01(No* ponteiroNo);
void printFormat02(No* ponteiroNo);
//Define o ultimo No da lista, meio que inicializa a lista como NULL
No* ponteiroFinal = NULL;
//Funcao que adiciona dados
void adicionarDado(int dado) {
No* ponteiroNo;
ponteiroNo = (No *) malloc(sizeof (ponteiroNo));
ponteiroNo->dado = dado;
ponteiroNo->prox = NULL;
if (ponteiroFinal == NULL)
ponteiroFinal = ponteiroNo;
else {
ponteiroNo->prox = ponteiroFinal;
ponteiroFinal = ponteiroNo;
}
}
//Funcao que imprime a lista
void imprimirLista() {
No* ponteiroNo;
if (ponteiroFinal == NULL) {
printf("Lista vazia.\n");
return;
}
ponteiroNo = ponteiroFinal;
while (ponteiroNo != NULL) {
if (ponteiroNo->prox !=NULL){
printFormat01(ponteiroNo);
}else{
printFormat02(ponteiroNo);
}
ponteiroNo = ponteiroNo->prox;
}
}
void printFormat01(No* ponteiroNo){
printf("[%d(%p)|%p]\n", ponteiroNo->dado, ponteiroNo, ponteiroNo->prox);
printf(" |\n");
printf(" V\n");
printf(" -------------\n");
printf(" |\n");
printf(" V\n");
}
void printFormat02(No* ponteiroNo){
printf("[%d(%p)|%p]\n", ponteiroNo->dado, ponteiroNo, ponteiroNo->prox);
printf(" |\n");
printf(" V\n");
printf(" NULL\n");
}
void buscarDado(int dado){
No* ponteiroNo;
if (ponteiroFinal == NULL) {
printf("Lista vazia.\n"); //signifca que a lista esta vazia não tem nenhum no criado
return;
}
ponteiroNo = ponteiroFinal; // recebe a referencia do ultimo no criado
while (ponteiroNo != NULL) { //percorre a lista
if(ponteiroNo->dado == dado) // o dado do no atual e o mesmo dado que quero achar como parametro
printf("[%d(%p)]\n", ponteiroNo->dado, ponteiroNo); //imprimi o no atual com seu respectivo dado
ponteiroNo = ponteiroNo->prox; // atualiza o no
}
}
//função remove no com implemetação de uma remoção em base de uma lista encadeada so que remoção de no do tipo de uma pilha
void removeNo(int dado);
void removeNo(int dado) {
No *percorreLista;
percorreLista = ponteiroFinal;
No *apaga;
//verifica se a lista esta vazia sem nenhum no
if(ponteiroFinal == NULL) {
printf("Lista Vazia Sem No!\n");
}
while(percorreLista != NULL) {
//APAGA TODO NO QUE E DIFERENTE DO QUE PROCURO
if(percorreLista->dado != dado) {
apaga = percorreLista;
percorreLista = percorreLista->prox;
ponteiroFinal = percorreLista;
free (apaga);
}
//APAGA NO QUE PROCURO E SAI DO WHILE LOGO EM SEGUIDA
else {
apaga = percorreLista;
percorreLista = percorreLista->prox;
ponteiroFinal = percorreLista;
free (apaga);
break;
}
}
}
void main() {
// Insere na lista os numeros de 1 a 4
for (int i = 1; i <= 4;i++)
adicionarDado(i); //ao invez de chamar a função 4 vezes eu passo a variavel iteradora do for
imprimirLista();
removeNo(2);
imprimirLista();
//buscarDado(3);
}
//Aluno Dyego Rodrigues
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// Define o tipo No contendo
typedef struct No{
int dado;
struct No *prox;
} No;
void printFormat01(No* ponteiroNo);
void printFormat02(No* ponteiroNo);
//Define o ultimo No da lista
No* ponteiroFinal = NULL;
//Funcao que adiciona dados
void adicionarDado(int dado) {
No* ponteiroNo;
ponteiroNo = (No *) malloc(sizeof (ponteiroNo));
ponteiroNo->dado = dado;
ponteiroNo->prox = NULL;
if (ponteiroFinal == NULL)
ponteiroFinal = ponteiroNo;
else {
ponteiroNo->prox = ponteiroFinal;
ponteiroFinal = ponteiroNo;
}
}
//Funcao que imprime a lista
void imprimirLista() {
No* ponteiroNo;
if (ponteiroFinal == NULL) {
printf("Lista vazia.\n");
return;
}
ponteiroNo = ponteiroFinal;
while (ponteiroNo != NULL) {
if (ponteiroNo->prox !=NULL){
printFormat01(ponteiroNo);
}else{
printFormat02(ponteiroNo);
}
ponteiroNo = ponteiroNo->prox;
}
}
void printFormat01(No* ponteiroNo){
printf("[%d(%p)|%p]\n", ponteiroNo->dado, ponteiroNo, ponteiroNo->prox);
printf(" |\n");
printf(" V\n");
printf(" -------------\n");
printf(" |\n");
printf(" V\n");
}
void printFormat02(No* ponteiroNo){
printf("[%d(%p)|%p]\n", ponteiroNo->dado, ponteiroNo, ponteiroNo->prox);
printf(" |\n");
printf(" V\n");
printf(" NULL\n");
}
void buscarDado(int dado){
No* ponteiroNo;
if (ponteiroFinal == NULL) {
printf("Lista vazia.\n");
return;
}
ponteiroNo = ponteiroFinal;
while (ponteiroNo != NULL) {
if (ponteiroNo->dado == dado)
printf("[%d(%p)]\n", ponteiroNo->dado, ponteiroNo);
ponteiroNo = ponteiroNo->prox;
}
}
void removerDado(int dado) {
No *ponteiroNo, *ponteiroAnterior;
if (ponteiroFinal == NULL) {// lista vazia
return;
} else { // lista NAO vazia
ponteiroNo = ponteiroFinal;
ponteiroAnterior = ponteiroFinal;
while (ponteiroNo != NULL) {
if (ponteiroNo->dado == dado) {
ponteiroFinal->prox = ponteiroNo->prox;
ponteiroFinal = ponteiroFinal->prox;
free(ponteiroNo); // libera memoria
return;
}
else { // continua procurando na lista
ponteiroAnterior = ponteiroNo;
ponteiroNo = ponteiroNo->prox;
}
}
return;
}
}
int main() {
// Insere na lista os numeros de 1 a 3
for (int i = 1; i <= 4; i++)
adicionarDado(i);
imprimirLista();
removerDado(2);
printf("--------------\n");
imprimirLista();
buscarDado(3);
return 0;
}
Vanderson leite campos
typedef struct No{ int dado; struct No *prox; } No;
void printFormat01(No ponteiroNo); void printFormat02(No ponteiroNo);
No* ponteiroFinal = NULL;
void adicionarDado(int dado) {
No* ponteiroNo;
ponteiroNo = (No *) malloc(sizeof (ponteiroNo));
ponteiroNo->dado = dado;
ponteiroNo->prox = NULL;
if (ponteiroFinal == NULL)
ponteiroFinal = ponteiroNo;
else {
ponteiroNo->prox = ponteiroFinal;
ponteiroFinal = ponteiroNo;
}
}
void imprimirLista() {
No* ponteiroNo;
if (ponteiroFinal == NULL) {
printf("Lista vazia.\n");
return;
}
ponteiroNo = ponteiroFinal;
while (ponteiroNo != NULL) {
if (ponteiroNo->prox !=NULL){
printFormat01(ponteiroNo);
}else{
printFormat02(ponteiroNo);
}
ponteiroNo = ponteiroNo->prox;
}
}
void printFormat01(No* ponteiroNo){
printf("[%d(%p)|%p]\n", ponteiroNo->dado, ponteiroNo, ponteiroNo->prox);
printf(" |\n");
printf(" V\n");
printf(" -------------\n");
printf(" |\n");
printf(" V\n");
} void printFormat02(No* ponteiroNo){
printf("[%d(%p)|%p]\n", ponteiroNo->dado, ponteiroNo, ponteiroNo->prox);
printf(" |\n");
printf(" V\n");
printf(" NULL\n");
}
void buscarDado(int dado){
No* ponteiroNo;
if (ponteiroFinal == NULL) {
printf("Lista vazia.\n");
return;
}
ponteiroNo = ponteiroFinal;
while (ponteiroNo != NULL) {
if (ponteiroNo->dado == dado)
printf("[%d(%p)]\n", ponteiroNo->dado, ponteiroNo);
ponteiroNo = ponteiroNo->prox;
}
}
void removerDadoPilha(int dado) {
No *ponteiroNo;
if (ponteiroFinal == NULL) {
return;
} else {
ponteiroNo = ponteiroFinal;
while (ponteiroNo != NULL) {
if (ponteiroNo->dado == dado){
ponteiroFinal->prox = ponteiroNo->prox;
ponteiroFinal = ponteiroFinal->prox;
free(ponteiroNo);
}
else{
ponteiroNo = ponteiroNo->prox;
}
}
return;
}
}
void main() {
for (int i = 1; i <= 4; i++)
adicionarDado(i);
imprimirLista();
removerDadoPilha(2);
printf("--------------\n\n");
imprimirLista();
}
//Marco Aurélio Santana Cruz
// Define o tipo No contendo
typedef struct No { int dado; struct No prox; } No; void printFormat01(No ponteiroNo); void printFormat02(No ponteiroNo); //Define o ultimo No da lista No ponteiroFinal = NULL; //Funcao que adiciona dados
void adicionarDado(int dado) { No ponteiroNo; ponteiroNo = (No ) malloc(sizeof (ponteiroNo)); ponteiroNo->dado = dado; ponteiroNo->prox = NULL; if (ponteiroFinal == NULL) ponteiroFinal = ponteiroNo; else { ponteiroNo->prox = ponteiroFinal; ponteiroFinal = ponteiroNo; } } //Funcao que imprime a lista
void imprimirLista() { No* ponteiroNo; if (ponteiroFinal == NULL) { printf("Lista vazia.\n"); return; } ponteiroNo = ponteiroFinal; while (ponteiroNo != NULL) { if (ponteiroNo->prox != NULL) { printFormat01(ponteiroNo); } else { printFormat02(ponteiroNo); } ponteiroNo = ponteiroNo->prox; } }
void printFormat01(No* ponteiroNo) { printf("[%d(%p)|%p]\n", ponteiroNo->dado, ponteiroNo, ponteiroNo->prox); printf(" |\n"); printf(" V\n"); printf(" -------------\n"); printf(" |\n"); printf(" V\n"); }
void printFormat02(No* ponteiroNo) { printf("[%d(%p)|%p]\n", ponteiroNo->dado, ponteiroNo, ponteiroNo->prox); printf(" |\n"); printf(" V\n"); printf(" NULL\n");
}
void buscarDado(int dado) { No* ponteiroNo; if (ponteiroFinal == NULL) { printf("Lista vazia.\n"); return; } ponteiroNo = ponteiroFinal; while (ponteiroNo != NULL) { if (ponteiroNo->dado == dado) printf("[%d(%p)]\n", ponteiroNo->dado, ponteiroNo); ponteiroNo = ponteiroNo->prox; } }
void removerDadoPilha(int dado) { No ponteiroNo; No ponteiroAnterior;
if (ponteiroNo == NULL) {
return;
} else {
ponteiroNo = ponteiroFinal;
ponteiroAnterior = ponteiroFinal;
while (ponteiroNo != NULL) {
if (ponteiroNo->dado == dado) {
ponteiroFinal->prox = ponteiroNo->prox;
ponteiroFinal = ponteiroFinal->prox;
free(ponteiroNo);
return;
} else {
ponteiroAnterior = ponteiroNo;
ponteiroFinal = ponteiroNo->prox;
}
}
return;
}
}
void main() { // Insere na lista os numeros de 1 a 5 for (int i = 1; i <= 5; i++) adicionarDado(i); imprimirLista(); printf("\n-----------------------------------------------------------------------------\n"); removerDadoPilha(1); imprimirLista(); buscarDado(0); }
Tainara Moura
// Define o tipo No contendo typedef struct No{ int dado; struct No *prox; } No;
void printFormat01(No ponteiroNo); void printFormat02(No ponteiroNo); //Define o ultimo No da lista No* ponteiroFinal = NULL;
//Funcao que adiciona dados void adicionarDado(int dado) { No ponteiroNo; ponteiroNo = (No ) malloc(sizeof (ponteiroNo)); ponteiroNo->dado = dado; ponteiroNo->prox = NULL; if (ponteiroFinal == NULL) ponteiroFinal = ponteiroNo; else { ponteiroNo->prox = ponteiroFinal; ponteiroFinal = ponteiroNo; } }
//Funcao que imprime a lista void imprimirLista() { No* ponteiroNo; if (ponteiroFinal == NULL) { printf("Lista vazia.\n"); return; } ponteiroNo = ponteiroFinal; while (ponteiroNo != NULL) { if (ponteiroNo->prox !=NULL){ printFormat01(ponteiroNo); }else{ printFormat02(ponteiroNo); } ponteiroNo = ponteiroNo->prox; }
}
void printFormat01(No ponteiroNo){ printf("[%d(%p)|%p]\n", ponteiroNo->dado, ponteiroNo, ponteiroNo->prox); printf(" |\n"); printf(" V\n"); printf(" -------------\n"); printf(" |\n"); printf(" V\n"); } void printFormat02(No ponteiroNo){ printf("[%d(%p)|%p]\n", ponteiroNo->dado, ponteiroNo, ponteiroNo->prox); printf(" |\n"); printf(" V\n"); printf(" NULL\n"); }
void buscarDado(int dado){ No* ponteiroNo; if (ponteiroFinal == NULL) { printf("Lista vazia.\n"); return; } ponteiroNo = ponteiroFinal; while (ponteiroNo != NULL) { if (ponteiroNo->dado == dado) printf("[%d(%p)]\n", ponteiroNo->dado, ponteiroNo); ponteiroNo = ponteiroNo->prox; } }
void removerDado(int dado) { No ponteiroNo, ponteiroAnterior; if (ponteiroFinal == NULL) {// lista vazia return; } else { // lista NAO vazia ponteiroNo = ponteiroFinal; ponteiroAnterior = ponteiroFinal; while (ponteiroNo != NULL) { if (ponteiroNo->dado == dado){ if (ponteiroFinal == ponteiroNo ){// removendo o primeiro ponteiroFinal = ponteiroFinal->prox; free(ponteiroNo);// libera memoria return; } else{ // removendo do meio ponteiroAnterior->prox = ponteiroNo->prox;//refaz links free(ponteiroNo);// libera memoria return; } } else{ // continua procurando na lista ponteiroAnterior = ponteiroNo; ponteiroNo = ponteiroNo->prox; } } return; } }
void main() { // Insere na lista os numeros de 1 a 3 for (int i = 1; i <= 4; i++) adicionarDado(i); imprimirLista(); removerDado(2); printf("--------------\n"); imprimirLista(); buscarDado(); }
Gustavo Henrique Garcez Andrade