如何解决使用链表打印真值表的 C 程序
这是我构建的程序:
int mynand(int a,int b);
int mynor(int a,int b);
int myxor(int a,int b);
int report(CallBack f,char *gates);
int main( )
{
CallBack myfunctions[] = {myand,myor,myxor,mynand,mynor};
char gatename[N][9+1] = {"AndGate","OrGate","XorGate","NandGate","NorGate"};
int i;
int size = sizeof(myfunctions)/sizeof(CallBack);
Name temp[N];
for(i=0; i<size; i++)
{
strcpy(temp[i].gates,gatename[i]);
temp[i].gatename=myfunctions[i];
}
for(i=0; i<size; i++)
{
printf("\n%s\n",temp[i].gates);
report(temp[i].gatename,temp[i].gates);
}
return 0;
}
int myand (int a,int b)
{
return a * b;
}
int myor (int a,int b)
{
return a + b>0;
}
int mynand (int a,int b)
{
return !(a * b);
}
int mynor (int a,int b)
{
return !(a + b);
}
int myxor (int a,int b)
{
return a*(!(a*b)) + b*(!(a*b));
}
int report(CallBack f,char * gates)
{
int i,j;
for(i=0; i<2; i++)
{
for(j=0; j<2; j++)
{
printf("%d %d %d\n",i,j,f(i,j));
}
}
printf("\n");
return 0;
}
这个程序作为输出:
AND
0 0 0
0 1 0
1 0 0
1 1 1
OR
0 0 0
0 1 1
1 0 1
1 1 1
XOR
0 0 0
0 1 1
1 0 1
1 1 0
NAND
0 0 1
0 1 1
1 0 1
1 1 0
NOR
0 0 1
0 1 0
1 0 0
1 1 0
2)我想修改函数 myand
,myor
等,以便将输入的简单链表作为数据元素类型,并通过编写正确的代码证明它可以正常工作在主要。这里给出的语句:
typedef struct data {
int value;
struct data * next; }
Data;
typedef Data * DataList;
int myandlst(DataList );
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;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。