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

问题描述

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

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
1

所需的输出:

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

有没有我想不到的好方法来做到这一点?该程序应该每次输入 n 次,而不仅仅是 2 次,因此我想到的很多技巧都行不通。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...