Serão apresentadas a seguir as operações de Lista Ligada para inserir no meio, remover e buscar, bem como as implementações na linguagem de programação Java. Para as operações em pseudocódigo, utilizaremos as seguintes definições de registro:

// definição do tipo registro No com os campos abaixo
tipo No = registro
	elemento ← 0 numérico_inteiro; // campo que armazena o elemento
	prox ← nulo No; // campo que armazena o endereço do próximo nó
fimregistro;

Onde o campo “elemento” armazena o elemento e o campo “prox” é o ponteiro que armazena o endereço do próximo nó que contém o elemento seguinte da lista ligada.

// definição do tipo registro ListaLigada com os campos abaixo
tipo ListaLigada = registro // o tipo registro chama-se ListaLigada
	primeiro ← nulo No; // campo primeiro que armazena o primeiro elemento da lista
	ultimo ← nulo No; // campo ultimo que armazena o último elemento da lista ligada
fimregistro;

Onde o campo “primeiro” é um ponteiro que armazena o endereço do primeiro elemento da lista ligada e o campo “último” é um ponteiro que armazena o endereço do último elemento da lista.

INSERIR DA LISTA LIGADA

“InserirMeio” é um módulo-procedimento da operação Inserir no Meio que recebe como parâmetro um elemento do tipo No a ser inserido e a posição onde ele deve estar e o insere no meio da lista ligada.

InserirMeio(NovoNo ↑**No**, posicao **numérico_inteiro**)
	**início_módulo
		Declarar**
			NoTemp ← primeiro **No**;
			NroNos, posAux ← 1 **numérico_inteiro**;
			NroNos ← ContarNos( );
			**se** (posicao <= 1)
				**então**
					InserirInicio(NovoNo);
				**senão
					se** (posicao > NroNos)
						**então**
							InserirFinal(NovoNo);
						**senão
							enquanto (**posAux > (posicao –1)**)**
								NoTemp ← NoTemp.prox;
								posAux ← posAux + 1;
							**fimenquanto;**
							NovoNo.prox ← NoTemp.prox;
							NoTemp.prox ← NovoNo;
					**fimse;
			fimse;
	fim_módulo;**

Em Java, o método InserirMeio.

REMOVER DA LISTA LIGADA

“Remover” é um módulo-procedimento que recebe o elemento a ser removido da operação e, se o elemento não existir ou a lista ligada estiver vazia, ele não fará nada. Caso contrário, removerá a primeira ocorrência desse elemento da lista ligada.

Remover (elemento **numérico_inteiro**)
	**início_módulo
		Declarar**
			NoTemp ← primeiro **No**;
			NoAnt ← **nulo** No;
			**se (**primeiro.elemento = elemento**)
				então**
					primeiro ← primeiro.prox;
				**senão
					enquanto (**NoTemp <> **nulo e** NoTemp.elemento <> elemento**)**
						NoAnt ← NoTemp;
						NoTemp ← NoTemp.prox;
					**fimenquanto;
					se (**NoTemp <> **nulo)
						então**
							NoAnt.prox ← NoTemp.prox;
					**fimse;
					se (**NoTemp = ultimo**)
						então**
							ultimo ← NoAnt;
					**fimse;
			fimse;
	fim_módulo;**

O método remover no Java.

BUSCAR DA LISTA LIGADA

“BuscarNo” é um módulo-função que recebe o elemento a ser pesquisado da operação Buscar e retorna o nó cujo elemento foi pesquisado.

**No** BuscarNo (elemento **numérico_inteiro**)
	**início_módulo
		Declarar**
			i ← 1 **numérico_inteiro**;
			NoTemp ← primeiro **No**;
			**enquanto** (NoTemp <> **nulo**) **faça
				se** (NoTemp.elemento = elemento)
					**então**
						escrever ("No " , NoTemp.elemento , " posição " , i);
						**retornar** NoTemp;
				**fimse;**
				i ← i + 1;
				NoTemp ← NoTemp.prox;
			**fimenquanto;
			retornar** **nulo**;
	**fim_módulo;**

Método BuscarNo no Java.