programação
#include
using namespace std; class Elemento{ public: int valor; // Pode ser implementa qualquer tipo de dados aqui. Elemento *prox; Elemento () { prox = NULL; // Construtor padrão } Elemento (int v) { // Construtor para o caso de haver já um valor a ser atribuído valor = v; prox = NULL; }
};
class ListaEncadeada { //Definição da Classe Elemento *criaElemento(int x){ tam++; return new Elemento(x); // Aloca espaço de memória } protected: int tam; Elemento *cabeca; // A "cabeça" é um ponteiro para o primeiro elemento da lista. public: ListaEncadeada () { // Construtor padrão; único cabeca = NULL; // Lista vazia tam = 0; } void insereF(int x){ // Método para adicionar um elemento novo ao final da lista. Elemento *novo = criaElemento(x); if (cabeca == NULL) // Lista vazia cabeca = novo; else { // Lista já tem elementos Elemento *onde = cabeca; while (onde->prox) // Enquanto não for o ultimo elemento onde = onde->prox; onde->prox = novo; } } void insereI(int x){ // Método para adicionar um elemento novo ao final da lista. Elemento *novo = criaElemento(x); if (cabeca != NULL) // Lista não vazia novo->prox = cabeca; cabeca = novo; } void insere(int x,int pos){ if (pos == 0) insereI(x); if (pos == tam) insereF(x); if ((pos0)){ Elemento *novo = criaElemento(x); Elemento *onde = cabeca; for (int i=0;iprox; novo->prox = onde->prox; onde->prox =