Use numberoftriangles, trianglelist, pointlist. For each triangle you have 3 numbers in trianglelist, which are indexes inside pointlist for the 3 corners of the triangle. They don't give you vertices directly, but you can easily derive them from there.
Let me know if it's still not clear.
for (int i = 0; i < numberoftriangles; ++i) {
int point1Index = trianglelist[i * 3 + 0];
int point2Index = trianglelist[i * 3 + 1];
int point3Index = trianglelist[i * 3 + 2];
REAL point1X = pointlist[2 * point1Index + 0];
REAL point1Y = pointlist[2 * point1Index + 1];
... etc
}
/* `trianglelist': An array of triangle corners. The first triangle's */
/* first corner is at index [0], followed by its other two corners in */
/* counterclockwise order, followed by any other nodes if the triangle */
/* represents a nonlinear element. Each triangle occupies */
/* `numberofcorners' ints. */
/* `pointlist': An array of point coordinates. The first point's x */
/* coordinate is at index [0] and its y coordinate at index [1], followed */
/* by the coordinates of the remaining points. Each point occupies two */
/* REALs.