#include <stdio.h>
#include <stdlib.h>

struct list_head
{
    struct list_head *next, *prev;
};

struct num
{
    int number;
    struct list_head list;
};

int main()
{
    struct num *head = malloc(sizeof(struct num));
    struct num *tmp = head;

    tmp->number = 0;
    tmp->list.prev = NULL;
    tmp->list.next = malloc(sizeof(struct num));

    printf("tmp = %x\n", tmp);
    printf("number1 = %d, prev1 = %x, next1 = %x\n"\
            , tmp->number, tmp->list.prev, tmp->list.next);
    
    tmp = tmp->list.next;   //?颱?銝??暺?    
    tmp->number = 1;
    tmp->list.prev = head;
    tmp->list.next = NULL;

    printf("tmp = %x\n", tmp);
    printf("number2 = %d, prev2 = %x, next2 = %x\n"\
            , tmp->number, tmp->list.prev, tmp->list.next);


    return 0;
}

