自测输入
{1,2,3}
预期输出
[3,2,1]
实际输出
[3,0,-492915352]
我这代码哪里出了问题导致实际输出的这样的
struct stack
{
int *num;
int top;
int maxsize;
};
struct stack *create(M)
{
struct stack *p;
p=(struct stack*)malloc(sizeof(struct stack));
p->top=-1;
p->num=(int*)malloc(sizeof(int)*M);
p->maxsize=M;
return p;
};
void push(struct stack *q,int x)
{
q->num[++q->top]=x;
}
int pop(struct stack *q)
{
int tem;
tem=q->num[q->top--];
return tem;
}
int* printListFromTailToHead(struct ListNode* listNode, int* returnSize ) {
struct ListNode* p;
p=listNode;
struct stack *q;
int num=0;
while(p->next!=NULL)
{
num++;
p=p->next;
}
q=create(num);
int varry[num];
int i=num;
p=listNode;
while(p->next!=NULL)
{
push(q,p->next->val);
p=p->next;
}
for(int o=0;o<num;o++)
{
varry[o]=pop(q);
}
*returnSize=i+1;
return varry;
}
第52行,push(q,p->next->val); 应改为:push(q,p->val);