Inserir um nó em uma lista vinculada em tempo constante?

Estou trabalhando em uma tarefa que está me dizendo para assumir que tenho uma lista vinculada individualmente com um cabeçalho e nós de cauda. Ele quer que eu insira um item y antes da posição p. Alguém pode olhar o meu código e me dizer se estou no caminho certo? Caso contrário, você pode me fornecer dicas ou sugestões (sem trocadilhos)?

tmp = new Node();
tmp.element = p.element;
tmp.next = p.next;
p.element = y;
p.next = tmp;

Acho que posso estar errado porque não utilizo os nós de cabeçalho e cauda mesmo que sejam especificamente mencionados na descrição do problema. Eu estava pensando em escrever um loop while para percorrer a lista até encontrar pe resolver o problema dessa maneira, mas isso não seria um tempo constante, seria?

questionAnswers(7)

yourAnswerToTheQuestion