我必须检查s1和s2的顶牌。 s1是一堆卡片,因此是s2。我已经拥有的stack_top函数如下:
/* Retrive data from the top of the stack */
node_data stack_top(stack *s){
if(!stack_empty(s)){ /* If the stack is not empty */
return (s->top->data); /* Return the data */
}
else{ /* Otherwise there is an error */
cardlist_error("stack_top called on empty stack");
}
}
我有
while (strcmp (stack_top(s1), stack_top(s2)) ==0 )
//then do the following..
但是我得到了segmentation fault
,我应该如何比较它们?
答案 0 :(得分:1)
如果您想检查两个stack
指针是否都指向同一个实例,只需检查其地址是否与s1 == s2
匹配。
如果要检查两个stack
指针是否包含相同数据且结构只有非指针成员,则可以检查memcmp(s1, s2, sizeof(*s1)) == 0
。
如果要检查两个stack
指针是否包含相同数据且结构有指针(例如字符串),则可能需要编写一个函数,通过依次比较每个实例来比较两个实例。