Closed waldeyr closed 5 years ago
Vanderson Leite campos
typedef struct Item { int dado; struct Item *prox; } No;
No inicio = NULL; No ponteiroNo;
void criarLista() {
inicio = NULL;
}
void adicionarDado(int dado) {
No *no;
no = (No *) malloc(sizeof (No));
if (no == NULL) {
printf("Erro de memoria. Voce esta programando o Windows?\n");
}
no->dado = dado;
no->prox = NULL;
if (inicio == NULL)
inicio = no;
else {
no->prox = inicio;
inicio = no;
}
}
void imprimirLista() {
No *ponteiroNo;
if (inicio == NULL) {
printf("Lista vazia.\n");
return;
}
ponteiroNo = inicio;
while (ponteiroNo != NULL) {
printf("[%d(%p)|%p]\n", ponteiroNo->dado, ponteiroNo, ponteiroNo->prox);
ponteiroNo = ponteiroNo->prox;
}
}
void buscar(int b){
No *bus;
bus = inicio;
while(bus != NULL){
if(bus->dado == b){
printf("A busca:%d\n",bus->dado);
}
bus = bus->prox;
}
}
int Removerfim(){
No *ptr; if (inicio==NULL) return 0;
else{ ptr = inicio; inicio = inicio->prox; free(ptr); return 1; } }
int RemoverIM(int dado){
No ptr, antes;
if (inicio==NULL){
return 0;
}
else{
ptr = inicio;
antes = inicio;
while (ptr !=NULL){
if (ptr->dado == dado){
if (ptr == inicio) {
inicio = inicio->prox;
free(ptr);
return 1;
}
else{
antes->prox = ptr->prox;
free(ptr);
return 1;
}
}
else{
antes = ptr;
ptr = ptr->prox;
}
}
return 0;
} }
void main() {
criarLista();
for (int i = 1; i <= 10; i++)
adicionarDado(i);
imprimirLista();
Removerfim(); // removendo do fim
imprimirLista();
printf("\n");
RemoverIM(1); // removendo o inicio
imprimirLista();
printf("\n");
RemoverIM(5); // removendo do meio
imprimirLista();
}
Aluno: Arthur José Fernandes
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>
// Define o tipo No contendo
typedef struct Item {
int dado;
struct Item *prox;
} No;
//Define o primeiro No da lista
No* ponteiroInicio = NULL;
// Funcao que define a lista como vazia.
void criarLista() {
ponteiroInicio = NULL;
}
//Funcao que adiciona dados
void adicionarDado(int dado) {
No* ponteiroNo;
ponteiroNo = (No *) malloc(sizeof (ponteiroNo));
if (ponteiroNo == NULL) {
printf("Erro de memoria. Voce esta programando o Windows?\n");
}
ponteiroNo->dado = dado;
ponteiroNo->prox = NULL;
if (ponteiroInicio == NULL)
ponteiroInicio = ponteiroNo;
else {
ponteiroNo->prox = ponteiroInicio;
ponteiroInicio = ponteiroNo;
}
}
void imprimirLista() {
No* ponteiroNo;
if (ponteiroInicio == NULL) {
printf("Lista vazia.\n");
return;
}
ponteiroNo = ponteiroInicio;
while (ponteiroNo != NULL) {
printf("[%d(%p)|%p]\n", ponteiroNo->dado, ponteiroNo, ponteiroNo->prox);
ponteiroNo = ponteiroNo->prox;
}
printf("\n");
}
//Funcao que procura um dado dentro de cada lista.
void procurarDado(int dado) {
No* ponteiroNo;
bool valorEncontrado = false;
if (ponteiroInicio == NULL) {
printf("Lista vazia.\n");
return;
}
if (ponteiroInicio != NULL) {
ponteiroNo = ponteiroInicio;
while (ponteiroNo != NULL) {
if (ponteiroNo->dado == dado) {
printf(" Valor '%d' encontrado no endereço: %p\n\n", ponteiroNo->dado, ponteiroNo);
if (valorEncontrado == false) {
valorEncontrado = true;
}
}
ponteiroNo = ponteiroNo->prox;
}
if (valorEncontrado == false) {
printf(" Nenhum dado encontrado com o valor '%d'\n\n", dado);
}
}
}
void removerDaLista(int dado) {
No* ponteiroNo;
No* ponteiroAnterior = NULL;
if (ponteiroInicio == NULL) {
printf("Lista vazia.\n");
return;
}
ponteiroNo = ponteiroInicio;
bool pararLaco = false;
while (pararLaco == false) {
if (ponteiroNo->prox == NULL) {
printf(" Nenhum dado foi encontrado com o valor '%d'.\n\n", dado);
pararLaco = true;
} else if (dado == ponteiroNo->dado) {
pararLaco = true;
} else {
ponteiroAnterior = ponteiroNo;
ponteiroNo = ponteiroNo->prox;
}
}
if (ponteiroAnterior != NULL) {
ponteiroAnterior->prox = ponteiroNo->prox;
} else {
ponteiroInicio = ponteiroNo->prox;
ponteiroNo->prox = NULL;
}
}
void main() {
// Cria lista
criarLista();
// Insere na lista os numeros de 1 a 5
for (int i = 1; i <= 5; i++)
adicionarDado(i);
// Imprime a lista
imprimirLista();
// Procura um dado na lista
procurarDado(3);
// Remove da lista
removerDaLista(3);
// Imprime a lista
imprimirLista();
}
Thays Correia da SIilva
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// Define o tipo No contendo
typedef struct Item {
int dado;
struct Item *prox;
} No;
//Define o primeiro No da lista
No* ponteiroInicio = NULL;
// Funcao que define a lista como vazia.
void criarLista() {
ponteiroInicio = NULL;
}
//Funcao que adiciona dados
void adicionarDado(int dado) {
No* ponteiroNo;
ponteiroNo = (No *) malloc(sizeof (ponteiroNo));
if (ponteiroNo == NULL) {
printf("Erro de memoria. Voce esta programando o Windows?\n");
}
ponteiroNo->dado = dado;
ponteiroNo->prox = NULL;
if (ponteiroInicio == NULL)
ponteiroInicio = ponteiroNo;
else {
ponteiroNo->prox = ponteiroInicio;
ponteiroInicio = ponteiroNo;
}
}
void imprimirLista() {
No* ponteiroNo;
if (ponteiroInicio == NULL) {
printf("Lista vazia.\n");
return;
}
ponteiroNo = ponteiroInicio;
while (ponteiroNo != NULL) {
printf("[%d(%p)|%p]\n", ponteiroNo->dado, ponteiroNo, ponteiroNo->prox);
ponteiroNo = ponteiroNo->prox;
}
}
void BuscarDado(int dado){
No* ponteiroNo;
if(ponteiroInicio == NULL){
printf("Lista Vazia");
return;
}
ponteiroNo = ponteiroInicio;
while(ponteiroNo != NULL){
if(ponteiroNo->dado == dado)
printf("[%d(%p)]\n",ponteiroNo->dado,ponteiroNo);
ponteiroNo = ponteiroNo->prox;
}
}
void RemoveDado(int dado){
No *c, *antes;
if (ponteiroInicio==NULL) {
return ;
} else {
c = ponteiroInicio;
antes = ponteiroInicio;
while (c !=NULL) {
if (c->dado == dado) {
if (c == ponteiroInicio) { // se esta removendo o primeiro da lista
ponteiroInicio = ponteiroInicio->prox;
free(c);
return;
} else {
antes->prox = c->prox; // Refaz o encadeamento
free(c); // Libera o espaço do no
return ;
}
} else {
antes = c;
c = c->prox;
}
}
return ;
}
}
void main() {
criarLista();
// Insere na lista os numeros de 1 a 5
for (int i = 1; i <= 5; i++)
adicionarDado(i);
imprimirLista();
BuscarDado(5);
RemoveDado(3);
imprimirLista();
}
`/implemeta uma funçao para apagar um dado e seu respectivo no/ //aluno: Samuel Amaro
// Define o tipo No contendo typedef struct Item { int dado; struct Item *prox; } No;
//Define o primeiro No da lista, qeu com passa do program se torna o ultimo no No* ponteiroFinal = NULL;
// Funcao que define a lista como vazia. void criarLista() { ponteiroFinal = NULL; }
//Funcao que adiciona dados void adicionarDado(int dado) { No ponteiroNo; ponteiroNo = (No ) malloc(sizeof (ponteiroNo)); if (ponteiroNo == NULL) { printf("Erro de memoria. Voce esta programando o Windows?\n"); } ponteiroNo->dado = dado; ponteiroNo->prox = NULL; if (ponteiroFinal == NULL) ponteiroFinal = ponteiroNo; else { ponteiroNo->prox = ponteiroFinal; ponteiroFinal = ponteiroNo; } }
//função que imprime a lista void imprimirLista() { No* ponteiroNo; if (ponteiroFinal == NULL) { printf("Lista vazia.\n"); return; } ponteiroNo = ponteiroFinal; //if(ponteiroNo->prox == NULL) { //ponteiroNo = ponteiroNo->prox; //} while (ponteiroNo != NULL) { //verifica se um no tem o proximo no apontando como um nullo se tiver ele imprime o no e da uma mensagem //if(ponteiroNo->prox == NULL) { //printf("[%d(%p)|%d] -> No que foi Excluido!\n",ponteiroNo->dado,ponteiroNo,ponteiroNo->prox); //} printf("[%d(%p)|%p]\n", ponteiroNo->dado, ponteiroNo, ponteiroNo->prox);
ponteiroNo = ponteiroNo->prox;
}
}
//função que busca um dado qualquer na lista
No buscaDados(int dado); No buscaDados(int dado) { No *percorreLista; percorreLista = ponteiroFinal; if(ponteiroFinal == NULL) { printf("No Vazio sem dado!\n"); } while(percorreLista != NULL) { if(percorreLista->dado == dado) { return percorreLista; } //começa do ultimo no e vai descendo a lista ate o no cabeça percorreLista = percorreLista->prox; }
}
//########################################################################################################################################## //função que remove um no que esta no meio void removeNoMeio(int dado); void removeNoMeio(int dado) { //recebe referencia do ultimo no criado No percorreLista = ponteiroFinal; //verifica se a lista esta vazia sem nenhum no if(percorreLista == NULL) printf("Lista Vazia!"); No noAntecessor; //armazenara um no antecessor de um no atual avaliado No *noSucessor; //armazenara um no sucessor ao um no avaliado //tentando remover um no no meio de dois nos while(percorreLista != NULL) {
/*verificações abaixo para remover um no no meio*/
//percorre minha lista para salvar todos os 'no' antes de um dado especifico
if(percorreLista->dado != dado) {
noAntecessor = percorreLista; //guarda o 'no' atual avaliado
noSucessor = percorreLista->prox; // guadra o sucessor do 'no' avalido
}
//quando tenho um 'no' verifico se um no 'atual' e oque estou buscando
if(percorreLista->dado == dado)
{
//o antecessor desse no vai apontar para o sucessor do no atual avaliado
noAntecessor->prox = noSucessor->prox;
noSucessor->prox = NULL; // faço o no atual apontar para null
free (noSucessor);// desaloco o no atual porque não uso mais
}
percorreLista = percorreLista->prox;
} }
//########################################################################################################### //remove um no no inicio void removeNoInicio(int dado); void removeNoInicio(int dado) { //recebe referencia do ultimo no criado No percorreLista = ponteiroFinal; //verifica se a lista esta vazia sem nenhum no if(percorreLista == NULL) printf("Lista Vazia!"); No noAntecessor; //armazenara um no antecessor de um no atual avaliado No noSucessor; //armazenara um no sucessor ao um no avaliado //tentando remover um no no meio de dois nos while(percorreLista != NULL) { //percorre minha lista para salvar todos os 'no' antes de um dado if(percorreLista->dado != dado) { noAntecessor = percorreLista; //guarda o 'no' atual avaliado noSucessor = percorreLista->prox; // guadra o sucessor do 'no' avalido } /veriificações para remover um 'no' no final da lista esse e o 'no' que aponta para null*/ if(percorreLista->prox == NULL){ //verifica se ele antes noAntecessor->prox = noSucessor->prox;//o antecessor desse no, recebe o 'no' que e o primeiro da lista, recebe oque ele aponta no casso null free (noSucessor); // e aqui desaloco o 'no' que e o atual que esta sendo avaliado } percorreLista = percorreLista->prox;
}
}
//################################################################################################################################# //remove ultimo no da lista nem preciso percorre a lista porque ja pego o ponteiro de referencia e sei que nele logo esta o ultimo no void removeNoFinal(int dado); void removeNoFinal(int dado) { No *noAntecessor = ponteiroFinal; ponteiroFinal = ponteiroFinal->prox; free (noAntecessor);
}
void main() {
setlocale(LC_ALL,"Portuguese");
criarLista();
// Insere na lista os numeros de 1 a 5
for(int i = 1; i <= 5; i++)
adicionarDado(i);
imprimirLista();
No* enderecoDado = buscaDados(4);
printf("Endereço de seu Dado em um no: %p\n",enderecoDado);
removeNoMeio(2);
imprimirLista();
removeNoInicio(1);
imprimirLista();
removeNoFinal(5);
imprimirLista();
}`
`//Cristiano Gomes Machado
// 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; } } const remove = (node) => { if(lenght === 0)
return if(node === head){
head = node.next
return
} let currentNode = head
while(currentNode.next && currentNode.next != node){
currentNode = currentNode.next
} return{
remove(node) => remove(node)
} console.log(currentNode)
let node = list.getByValue(2)
console.log(node) list.remove(node)
let currentNode = head
while(currentNode.next && currentNode.next != node){
currentNode = currentNode.next
}
currentNode.next = node.next
list.add2(4)
let node = list.getByValue(3)
console.log(node)
list.remove(node)
imprimirLista(); }
int main() { // Insere na lista os numeros de 1 a 3 for (int i = 1; i <= 3; i++) adicionarDado(i); imprimirLista();
removerDado(3);
imprimirLista();
buscarDado(3);
system("pause");
return 0;
}`
Judy Ellen Vera Marins 20171070130234
typedef struct Item { int dado; struct Item *prox; } No;
No* ponteiroI = NULL;
void criarLista() { ponteiroI = NULL; } void adicionarDado(int dado) { No ponteiroNo; ponteiroNo = (No ) malloc(sizeof (ponteiroNo)); if (ponteiroNo == NULL) { printf("Erro de memoria. Voce esta programando o Windows?\n"); } ponteiroNo->dado = dado; ponteiroNo->prox = NULL; if (ponteiroI == NULL) ponteiroI = ponteiroNo; else { ponteiroNo->prox = ponteiroI; ponteiroI = ponteiroNo; } }
void imprimirLista() { No* ponteiroNo; if (ponteiroI == NULL) { printf("Lista vazia.\n"); return; } ponteiroNo = ponteiroI; while (ponteiroNo != NULL) { printf("[%d(%p)|%p]\n", ponteiroNo->dado, ponteiroNo, ponteiroNo->prox); ponteiroNo = ponteiroNo->prox; } } void BuscarDado(int dado){
No* ponteiroNo;
if(ponteiroI == NULL){
printf("Lista Vazia");
return;
}
ponteiroNo = ponteiroI;
while(ponteiroNo != NULL){
if(ponteiroNo->dado == dado)
printf("[%d(%p)]\n",ponteiroNo->dado,ponteiroNo);
ponteiroNo = ponteiroNo->prox;
}
}
void RemoveDado(int dado){
No c, antes;
if (ponteiroI==NULL) {
return ;
} else {
c = ponteiroI;
antes = ponteiroI;
while (c !=NULL) {
if (c->dado == dado) {
if (c == ponteiroI) { // se esta removendo o primeiro da lista
ponteiroI = ponteiroI->prox;
free(c);
return;
} else {
antes->prox = c->prox; // Refaz o encadeamento
free(c); // Libera o espaço do no
return ;
}
} else {
antes = c;
c = c->prox;
}
}
return ;
}
}
void main() {
criarLista();
// Insere na lista os numeros de 1 a 10
for (int i = 1; i <= 10; i++)
adicionarDado(i);
imprimirLista();
BuscarDado(7);
RemoveDado(9);
imprimirLista();
}
//Matheus de Almeida Magalhães
// Define o tipo No contendo
typedef struct Item { int dado; struct Item prox; } No; //Define o primeiro No da lista No inicio = NULL; // Funcao que define a lista como vazia.
void criarLista() { inicio = NULL; }
void adicionarDado(int dado) { No no; no = (No )malloc(sizeof(No)); if (no == NULL) { printf("Erro de memoria. Voce esta programando o Windows?\n"); } no->dado = dado; no->prox = NULL; if (inicio == NULL) inicio = no; else { no->prox = inicio; inicio = no; } }
void imprimirLista() { No *ponteiroNo; if (inicio == NULL) { printf("Lista vazia.\n"); return; } ponteiroNo = inicio; while (ponteiroNo != NULL) { printf("[%d(%p)|%p]\n", ponteiroNo->dado, ponteiroNo, ponteiroNo->prox); ponteiroNo = ponteiroNo->prox; } }
void buscar() { int num; No *ponteiroNo; printf("Qual número você quer buscar? "); scanf("%d", &num);
ponteiroNo = inicio;
while (ponteiroNo != NULL)
{
if (ponteiroNo->dado == num)
{
printf("Número %d encontrado: %p\n", num, ponteiroNo);
}
ponteiroNo = ponteiroNo->prox;
}
}
void excluir() { int dado; printf("Qual número você quer excluir? "); scanf("%d", &dado);
No *ponteiroAtual, *ponteiroAnterior = NULL;
if (inicio == NULL)
{
printf("Lista vazia.\n");
return;
}
ponteiroAtual = inicio;
bool parar = false;
while (parar == false)
{
if (ponteiroAtual->prox == NULL)
{
printf(" Nenhum dado foi encontrado com o valor '%d'.\n\n", dado);
parar = true;
}
else if (dado == ponteiroAtual->dado)
{
parar = true;
}
else
{
ponteiroAnterior = ponteiroAtual;
ponteiroAtual = ponteiroAtual->prox;
}
}
if (ponteiroAnterior != NULL)
{
ponteiroAnterior->prox = ponteiroAtual->prox;
}
else
{
inicio = ponteiroAtual->prox;
ponteiroAtual->prox = NULL;
}
}
void main() { No *aux; criarLista(); // Insere na lista os numeros de 1 a 5 for (int i = 1; i <= 5; i++) adicionarDado(i); buscar(); excluir(); imprimirLista(); }
Guilherme Henrique Lopes de Almeida Saraiva
#include <stdio.h>
#include <stdlib.h>
//Declaration of the structs.
struct Bloc{
int item;
struct Bloc *nextNeighbor;
};
typedef struct Bloc Node;
//Universal variables.
Node *addressNode = NULL;
//Functions prototype.
int Creator(Node**, int );
void Reader(Node*);
void DeleteIt(Node**, int );
//CRD
int Creator(Node **blocAddress, int item){
Node *newBloc = (Node*)malloc(sizeof(blocAddress));
newBloc->item = item;
newBloc->nextNeighbor = (*blocAddress);
(*blocAddress) = newBloc;
}
void Reader(Node *blocAddress){
while (blocAddress != NULL){
printf("%p|%02d|%p\n", blocAddress, blocAddress->item, blocAddress->nextNeighbor);
blocAddress = blocAddress->nextNeighbor;
}
}
void DeleteIt(Node **blocAddress, int item){
if(*blocAddress == NULL){
puts("Linked list empty!");
return;
}
Node *temp = *blocAddress;
if (item == 0){
*blocAddress = temp->nextNeighbor;
free(temp);
return;
}
for (int i = 0; temp!=NULL && i<item-1; i++)
temp = temp->nextNeighbor;
if (temp == NULL || temp->nextNeighbor == NULL)
return;
Node *next = temp->nextNeighbor->nextNeighbor;
free(temp->nextNeighbor);
temp->nextNeighbor = next;
}
//Begin of function main.
int main(){
for(int item = 10; item != 0; item--)
Creator(&addressNode, item);
Reader(addressNode);
puts("Select a number for delete: ");
int select;
scanf("%d", &select);
DeleteIt(&addressNode, select - 1);
Reader(addressNode);
return 0;
}
//Marco Aurélio Santana Cruz
// Define o tipo No contendo
typedef struct No { int dado; struct No prox; } No; //Define o primeiro No da lista No ponteiroInicio = NULL; // Funcao que define a lista como vazia.
void criarLista() { ponteiroInicio = NULL; } //Funcao que adiciona dados
void adicionarDado(int dado) { No ponteiroNo; ponteiroNo = (No ) malloc(sizeof (ponteiroNo)); if (ponteiroNo == NULL) { printf("Erro de memoria. Voce esta programando o Windows?\n"); } ponteiroNo->dado = dado; ponteiroNo->prox = NULL; if (ponteiroInicio == NULL) ponteiroInicio = ponteiroNo; else { ponteiroNo->prox = ponteiroInicio; ponteiroInicio = ponteiroNo; } } //Funcao que imprime a lista
void imprimirLista() { No* ponteiroNo; if (ponteiroInicio == NULL) { printf("Lista vazia.\n"); return; } ponteiroNo = ponteiroInicio; while (ponteiroNo != NULL) { printf("[%d(%p)|%p]\n", ponteiroNo->dado, ponteiroNo, ponteiroNo->prox); ponteiroNo = ponteiroNo->prox; } }
void buscarLista(int dado) { No*ponteiroNo; if (ponteiroInicio == NULL) { printf("Está vazio"); }
ponteiroNo = ponteiroInicio;
while (ponteiroNo != NULL) {
if (ponteiroNo->dado == dado) {
printf("Item da busca: \n[%d(%p)]\n", ponteiroNo->dado, ponteiroNo);
}
ponteiroNo = ponteiroNo->prox;
}
}
void deletarLista(int dado) { No ant, a; if (ponteiroInicio == NULL) { return; }
a = ponteiroInicio;
ant = ponteiroInicio;
while (a != NULL) {
if (a->dado == dado) {
if (a == ponteiroInicio) {
ponteiroInicio = ponteiroInicio->prox;
free(a);
}
if (a != ponteiroInicio) {
ant->prox = a->prox;
free(a);
}
} else {
ant = a;
a = a->prox;
}
}
while (ponteiroInicio != NULL) {
printf("[%d(%p)|%p]\n", ponteiroInicio->dado, ponteiroInicio, ponteiroInicio->prox);
ponteiroInicio = ponteiroInicio->prox;
}
}
void main() { criarLista(); // Insere na lista os numeros de 1 a 5 for (int i = 1; i <= 5; i++) adicionarDado(i); imprimirLista(); buscarLista(5); printf("\n"); printf("Item deleteado: 1\n"); deletarLista(1); }
Gearle Soares
typedef struct Item {
int dado;
struct Item prox;
} No;
No inicio = NULL;
No ponteiroNo;
//--------------------------------criar lista-----------------------------
void criarLista() {
inicio = NULL;
}
//-------------------------------add dado--------------------------------
void adicionarDado(int dado) {
No no;
no = (No ) malloc(sizeof (No));
if (no == NULL) {
printf("Erro de memoria. Voce esta programando o Windows?\n");}
no->dado = dado;
no->prox = NULL;
if (inicio == NULL)
inicio = no;
else {
no->prox = inicio;
inicio = no; }
}
//--------------------------------imprime-----------------------------
void imprimirLista() {
No ponteiroNo;
if (inicio == NULL) {
printf("Lista vazia.\n");
return; }
ponteiroNo = inicio;
while (ponteiroNo != NULL) {
printf("[%d(%p)|%p]\n", ponteiroNo->dado, ponteiroNo, ponteiroNo->prox);
ponteiroNo = ponteiroNo->prox; }
}
//--------------------------------busca------------------------------
void buscar(int b){
No bus;
bus = inicio;
while(bus != NULL){
if(bus->dado == b){
printf("A busca:%d\n",bus->dado); }
bus = bus->prox; }
}
//----------------------------------remove-----------------------------
int Removerfim(){
No ptr;
if (inicio==NULL)
return 0;
else{
ptr = inicio;
inicio = inicio->prox;
free(ptr);
return 1; }
}
int RemoverMeio(int dado){
No ptr, antes;
if (inicio==NULL){
return 0; }
else{
ptr = inicio;
antes = inicio;
while (ptr !=NULL){
if (ptr->dado == dado){
if (ptr == inicio) {
inicio = inicio->prox;
free(ptr);
return 1; }
else{
antes->prox = ptr->prox;
free(ptr);
return 1; }
}
else{
antes = ptr;
ptr = ptr->prox;
}
}
return 0;
}
}
void main() {
criarLista();
for (int i = 1; i <= 10; i++)
adicionarDado(i);
imprimirLista();
Removerfim();
imprimirLista();
printf("\n");
RemoverMeio(1);
imprimirLista();
printf("\n");
RemoverMeio(5);
imprimirLista();
}
//José Vitor
// Define o tipo No contendo typedef struct Item { int dado; struct Item *prox; } No;
//Define o primeiro No da lista No* ponteiroInicio = NULL;
// Funcao que define a lista como vazia. void criarLista() { ponteiroInicio = NULL; }
//Funcao que adiciona dados void adicionarDado(int dado) { No ponteiroNo; ponteiroNo = (No ) malloc(sizeof (ponteiroNo)); if (ponteiroNo == NULL) { printf("Erro de memoria. Voce esta programando o Windows?\n"); } ponteiroNo->dado = dado; ponteiroNo->prox = NULL; if (ponteiroInicio == NULL) ponteiroInicio = ponteiroNo; else { ponteiroNo->prox = ponteiroInicio; ponteiroInicio = ponteiroNo; } }
void imprimirLista() { No ponteiroNo; if (ponteiroInicio == NULL) { printf("Lista vazia.\n"); return; } ponteiroNo = ponteiroInicio; while (ponteiroNo != NULL) { printf("[%d(%p)|%p]\n", ponteiroNo->dado, ponteiroNo, ponteiroNo->prox); ponteiroNo = ponteiroNo->prox; } } void buscarDado(int dado){ No ponteiroNo; if(ponteiroInicio == NULL){ printf("Lista Vazia"); return; } ponteiroNo = ponteiroInicio; while(ponteiroNo != NULL){ if(ponteiroNo->dado == dado) printf("[%d(%p)]\n",ponteiroNo->dado,ponteiroNo); ponteiroNo = ponteiroNo->prox; } } void removeDado(int dado){ //função para remover dados da lista. No posicao1,posicao2; if (ponteiroInicio == NULL) { printf("lista vazia"); return; } posicao1=ponteiroInicio; posicao2=ponteiroInicio; do{ if (posicao1->dado == dado) { if (posicao1 == ponteiroInicio) { ponteiroInicio = ponteiroInicio->prox; free(posicao1); return; } else { posicao2->prox = posicao1->prox; free(posicao1); return ; } } posicao2 = posicao1; posicao1 = posicao1->prox; }while(posicao1!=NULL); return ; } void main() { criarLista(); // Insere na lista os numeros de 1 a 5 for (int i = 1; i <= 5; i++) adicionarDado(i); imprimirLista(); printf("----------------------\n"); buscarDado(2); removeDado(2); printf("----------------------\n"); imprimirLista(); }