0

我必须检查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,我应该如何比较它们 2?

4

1 回答 1

1

如果要检查两个stack指针​​是否都指向同一个实例,只需检查它们的地址是否匹配s1 == s2

如果要检查两个stack指针​​是否都保存相同的数据并且结构只有非指针成员,可以检查memcmp(s1, s2, sizeof(*s1)) == 0.

如果您想检查两个stack指针​​是否都保存相同的数据并且结构具有指针(例如字符串),您可能需要编写一个函数,通过依次比较它们的每个成员来比较两个实例。

于 2012-12-04T23:16:09.527 回答