C 如何用链表打印逻辑门的真值表

C 如何用链表打印逻辑门的真值表,c,linked-list,truthtable,C,Linked List,Truthtable,我正在打印逻辑门的真值表。我必须使用一个链表和一个特定的结构 typedef struct data { int value; struct data * next; } Data; typedef Data * DataList; int myandlst(DataList *list); int report(DataList inputs); int main( ) { DataList inputs=NULL; myandlst(&inputs)

我正在打印逻辑门的真值表。我必须使用一个链表和一个特定的结构

typedef struct data
{
    int value;
    struct data * next;
} Data;
typedef Data * DataList;
int myandlst(DataList *list);
int report(DataList inputs);

int main( )
{
    DataList inputs=NULL;
    myandlst(&inputs);
    report(inputs);
    return 0;
}
Data * createData( int value)
{
    Data * dataptr;
    dataptr = malloc(sizeof (Data));
    dataptr->value = value;
    dataptr->next = NULL;
    return dataptr;
}
void appendData(DataList *lstptr, Data *newptr)
{
    if (*lstptr==NULL)
    {
        *lstptr = newptr;
        return;
    }
    appendData( &((*lstptr)->next), newptr);
    return;
}

int myandlst (DataList *inlist)
{
    int i,j;
    for (i=0; i<2; i++)
    {
        for (j = 0; j<2; j++)
        {
            appendData(inlist,createData(i*j));
        }
    }
    return 0;
}
int report(DataList inputs)
{
    DataList temp ;
    if (inputs == NULL)
        return;

    for (temp = inputs; temp != NULL; temp = temp->next)
        printf("%d\n",temp->value);
    printf("\n");
    return 0;
}
期望输出:

0 0 0
0 1 0
1 0 0
1 1 1

有没有我想不出的好办法?程序应该每次接受n个输入量,而不是2个,因此我想到的很多技巧都不起作用。

此外,我如何使它能够使用相同的列表打印更多的真值表,而不必每次调用report函数都打印所有真值表?链表如何与逻辑门相关?为什么要使用链表?为什么不使用数组或循环?链表存储什么?如果显示的输出来自
report()
函数,但您的输出是一个4x3表,则您似乎在链表中存储了4个值。4个值如何对应4x3表中的值?请不要键入定义指针。如果您这样做,请不要在某些代码中使用
Datalist
,在其他代码中使用
Data*
。这里的typedef只是混淆了代码,并没有澄清任何东西。您想要的输出为什么不是正方形?对于4值列表,我希望期望的输出为2x2。对于真值表中的3个值,我希望输出3x3。什么情况下会呈现4x3输出?正如我所说的“我必须使用链接列表和特定结构”。这正是我被要求做的。我也不能以任何方式更改typedef。
0 0 0
0 1 0
1 0 0
1 1 1