#include <stdio.h>

typedef struct _KZT {
    int index;
    char *name;
    struct _KZT *prev;
    struct _KZT *next;
} KZT;

int main()
{
    int i;
    KZT *p;
    KZT d[] = {
        {0, "miso"     , NULL, &d[1]},
        {1, "sio"      , &d[0], &d[2]},
        {2, "shoyu"    , &d[1], &d[3]},
        {3, "tonkotsu" , &d[2], NULL},
    };

    for (i = 0; i < sizeof(d) / sizeof(d[0]); i++) {
        printf("[%d]:%d,%s\n", i, d[i].index, d[i].name);
    }

    p = &d[0];
    do {
        printf("%d,%s\n", p->index, p->name);
        p = p->next;
    } while (p);
    return 0;
}