
/*
 * xr.c - a cross-reference generator
 */
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct listnode listnode;
struct listnode
    {
    unsigned number;
    listnode *next;
    };

typedef struct treenode treenode;
struct treenode
    {
    char *word;
    listnode *lines;
    treenode *left, *right;
    };

treenode *addtree(treenode *t, char *w, unsigned n);
void printtree(treenode *t);
int getword(char *word, size_t lim);

#define MAXWORD 100

int main(void)
    {
    treenode *root = NULL;
    char word[MAXWORD];
    unsigned lineno = 1;

    while (getword(word, MAXWORD) != EOF)
        if (isalpha(word[0]))
            root = addtree(root, word, lineno);
        else if (word[0] == '\n')
            ++lineno;
    printtree(root);
    return 0;
    }

