A solution using TikZ (with manual placements):
\documentclass[border=3.14,tikz]{standalone}
\usetikzlibrary{positioning}
\usepackage{amssymb}
\begin{document}
\begin{tikzpicture}
\node at (0,0) (d) {\ldots};
\node[right=of d] (c3) {$C_3(*)$};
\node[right=of c3] (c2) {$C_2(*)$};
\node[right=of c2] (c1) {$C_1(*)$};
\node[right=of c1] (c0) {$C_0(*)$};
\node[right=of c0] (0) {$0$};
\draw[->] (d) --node[above]{$\cong$} (c3);
\draw[->] (c3) --node[above]{$0$} (c2);
\draw[->] (c2) --node[above]{$\cong$} (c1);
\draw[->] (c1) --node[above]{$0$} (c0);
\draw[->] (c0) -- (0);
\foreach\x in {0,...,3}
{
\node[node distance=0.5cm,above=of c\x] (z\x) {$\mathbb{Z}$};
\path (c\x) --node[rotate=90]{$\cong$} (z\x);
}
\end{tikzpicture}
\end{document}
TikZ using the graphs
and quotes
syntax:
\documentclass[border=3.14,tikz]{standalone}
\usetikzlibrary{graphs,quotes,positioning}
\usepackage{amssymb}
\begin{document}
\begin{tikzpicture}
\graph[grow right=2cm]
{
d [as=\ldots] ->["$\cong$"]
c3 [as=$C_3(*)$] ->["$0$"]
c2 [as=$C_2(*)$] ->["$\cong$"]
c1 [as=$C_1(*)$] ->["$0$"]
c0 [as=$C_0(*)$] ->
0 [as=$0$]
};
\foreach\x in {3,...,0}
{
\node[node distance=0.5cm,above=of c\x] (z\x) {$\mathbb{Z}$};
\path (c\x) --node[rotate=90]{$\cong$} (z\x);
}
\end{tikzpicture}
\end{document}

\rotatebox
ingraphicx
package.