The list would be of any length. Nodes and relationships can already exist in the graph, hence reusing them, creating only connecting relationships and / or nodes when required.
WITH [ "A", "B", "C" ] as list
UNWIND range(0, size(list) - 1) as index // list from 0 to size-1, so [0,1,2]
MERGE (n:Test {ps: list[index]})
WITH n, index, list
WHERE index > 0 // to exclude first item from rel creation
MATCH (m:Test {ps: list[index -1]})
MERGE p=(m)-[:NEXT]->(n)
RETURN p