You already did almost everything on your own, congratulations. Here's what you can add to complete your picture.
EDIT
I edited my post (and the picture) to fix some issues in the creation of the matrices (now everything is drawn on grid
) and to add the open ended that you wanted in the first place.
\documentclass[tikz,border=3.14mm]{standalone}
\usetikzlibrary{matrix,positioning,arrows}
\tikzset{
mymat/.style={
matrix of math nodes,
minimum width=1cm,
minimum height=1cm,
text height=2.5ex,
text depth=0.75ex,
text width=3.25ex,
align=center,
row sep=-\pgflinewidth,
outer sep=0pt,
inner sep=0pt
},
}
\begin{document}
\begin{tikzpicture}[>=latex,on grid]
\matrix[mymat,anchor=south west,style={nodes=draw}]
at (1,0)
(mat1)
{
\dots\\
\dots\\
\dots\\
69\\
98\\
};
\matrix[mymat,right=30mm of mat1-5-1.south,anchor=south,style={nodes={draw}}]
(mat2)
{
7\\
7\\
};
\matrix[mymat,above=30 mm of mat2,style={nodes={draw}}]
(mat5)
{
1\\
2\\
};
%%%%%% Modified part
% Draw the open end
\draw (mat1-1-1.north west) --++ (0,1);
\draw (mat1-1-1.north east) --++ (0,1);
% Draw the arrows
\path[->]
(mat1-5-1.east) edge[] node [left] {} (mat2-2-1.west);
\path[->]
(mat1-4-1.east) edge[] node [left] {} (mat5-2-1.west);
% Number the cells
\foreach \i [count=\l from 0] in {5,...,1} \node[left= 8mm of mat1-\i-1] {\l};
\foreach \l [count=\i from 1] in {A,B}
{
\node[right=8 mm of mat2-\i-1] {\l};
\node[right=8 mm of mat5-\i-1] {\l};
}
\end{tikzpicture}
\end{document}
EDIT 2
Now to the colours and the text widths, you can add some filling into your matrices declaration and you can change locally the text width to adapt it to your content.
\documentclass[tikz,border=3.14mm]{standalone}
\usetikzlibrary{matrix,positioning,arrows}
\tikzset{
mymat/.style={
matrix of math nodes,
minimum width=1cm,
minimum height=1cm,
text height=2.5ex,
text depth=0.75ex,
text width=3.25ex,
align=center,
row sep=-\pgflinewidth,
outer sep=0pt,
inner sep=0pt
},
}
\begin{document}
\begin{tikzpicture}[>=latex,on grid]
\matrix[mymat,fill=olive!50,anchor=south west,style={nodes=draw}]
at (1,0)
(mat1)
{
\dots\\
\dots\\
\dots\\
69\\
98\\
};
\matrix[mymat,text width=15mm,fill=cyan,right=30mm of mat1-5-1.south,anchor=south,style={nodes={draw}}]
(mat2)
{
7584\\
7968\\
};
\matrix[mymat,fill=pink,above=30 mm of mat2,style={nodes={draw}}]
(mat5)
{
1\\
2\\
};
%%%%%% Modified part
% Draw the open end
\draw (mat1-1-1.north west) --++ (0,1);
\draw (mat1-1-1.north east) --++ (0,1);
% Draw the arrows
\path[->]
(mat1-5-1.east) edge[] node [left] {} (mat2-2-1.west);
\path[->]
(mat1-4-1.east) edge[] node [left] {} (mat5-2-1.west);
% Number the cells
\foreach \i [count=\l from 0] in {5,...,1} \node[left= 8mm of mat1-\i-1] {\l};
\foreach \l [count=\i from 1] in {A,B}
{
\node[right=1 mm of mat2-\i-1.east] {\l};
\node[right=1 mm of mat5-\i-1.east] {\l};
}
\end{tikzpicture}
\end{document}