C语言字符串压栈问题
我是将字符串压栈,为什么在弹出元素的时候字符串的值会改变呢?struct Node
{
char str[50];
int level;
PtrToNode next;
};
//Push 进栈
void Push(char *x, int level, Stack S)
{
PtrToNode tmpCell;
int i=0;
tmpCell = malloc(sizeof(struct Node));
if (tmpCell == NULL)
printf("Out of space!\n");
else
{
strcpy(tmpCell->str, x);
tmpCell->level = level;
tmpCell->next = S->next;
S->next = tmpCell;
}
}
//返回栈顶元素所在结点的指针
Stack Top(Stack S)
{
if( !IsEmpty(S) )
return S->next;
printf("Empty stack\n");
return NULL;
}
然后用一个 Stack 指针输出字符串,和压进去的不一样了,奇怪啊
比如
void main()
{
Stack tmp;
tmp = Top(S);
puts(tmp->str);
}