Why does Skiena reserve space for n+1 adjacency lists? I am reading up on graph theory from the book Algorithm Design Manual - Skiena. And he shows a structure of a graph as follows :    

#define MAXV        100     /* maximum number of vertices */
#define MAXDEGREE   50      /* maximum outdegree of a vertex */

typedef struct {
    int v;              /* neighboring vertex */
    int weight;         /* edge weight */
} edge;

typedef struct {
    edge edges[MAXV+1][MAXDEGREE];  /* adjacency info */
    int degree[MAXV+1];     /* outdegree of each vertex */
    int nvertices;          /* number of vertices in the graph */
    int nedges;         /* number of edges in the graph */
} graph;


I am confused about why the size of adjacency list or the degree is MAXV+1. Is it to handle edges that begin and end in the same vertex E(v,v) ?
Note that the author uses 1 instead of 0 as the starting point of an array $A$. In other words, $A[0]$ is wasted. For example, to initialize a graph:

for (i=1; i&lt;=MAXV; i++) g-&gt;degree[i] = 0;




By the way, in the second edition of this book, it is (Section 5.2):

#define MAXV 1000            /* maximum number of vertices*/

typedef struct {
  int y;                    /* adjacency info */
  int weight;               /* edge weight, if any */
  struct edgenode *next;    /* next edge in list */
} edgenode;

typedef struct {
  edgenode *edges[MAXV+1]; /* adjacency info */
  int degree[MAXV+1];      /* outdegree of each vertex */
  int nvertices;           /* number of vertices in graph */
  int nedges;              /* number of edges in graph */
  bool directed;           /* is the graph directed? */
} graph;