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