Why does Skiena reserve space for n+1 adjacency lists?
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;