为什么主函数只执行一半?感谢大佬!

 

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define size 100
#define len 2
typedef int status;
typedef char Elemtype;

typedef struct
{
	Elemtype *top;
	Elemtype *bot;
	int stacksize;
}sqstack;

status initstack(sqstack &s)
{
	s.bot = (Elemtype *)malloc(sizeof(Elemtype) * size);
	if(!s.bot)
		exit(0);
	s.top = s.bot;
	s.stacksize = size;
	return 0;
 } 
 
status stackEmpty(sqstack s)
{
	if(s.top == s.bot)
		return 1;
	return 0;
}
status stackPush(sqstack &s,Elemtype e)
{
	Elemtype *p;
	if(s.top - s.bot == s.stacksize)
		p = s.bot;
		s.bot = (Elemtype *)malloc(sizeof(Elemtype) * (size + len));
		for(int i=0;i<s.stacksize;i++)
		{
			s.bot[i] = p[i];
		}
		s.stacksize = size + len;
		free(p);
	*s.top = e;
	s.top++;
	return 0;
}

status stackpop(sqstack &s)
{
	if(stackEmpty(s) == 1)
		printf("栈空!请入栈\n");
	Elemtype e = *s.top;
	s.top--;
	return e;
}

int stackprint(sqstack s)
{
	for(int k=0;k < s.top - s.bot;k++)
	{
		printf("|%c|\t",s.bot[k]);
	}
	printf("\n");
	return 0;
}
int stacklength(sqstack s)
{
	return (s.top - s.bot);
}


int main()
{
	char str[20];
	char temp;
	int L,N=0,next;
	
	sqstack s;
	initstack(s);
	if(initstack(s) == 0)
		printf("初始化成功!!\n\n");
	else
		printf("初始化失败!!\n\n");
	
	printf("请输入需要判断的字符序列:\n");
	scanf("%s",str);
	L = strlen(str);
	printf("键入字符序列的长度是:%d\n",L);
	
	for(int i=0;i<L/2;i++)
	{
		stackPush(s,str[i]);
	}
	stackprint(s);
	
	if( L%2 == 0)
	{
		next = L/2 + 1;
	}
	else
	{
		next = L/2 + 2;
	}
	
	while( !stackEmpty(s) )
	{
		temp = stackpop(s);;
		if( temp != str[next])
			printf("不是回文!!\n");
		else
			next++;
			N++;
	}
	if(N == stacklength(s))
		printf("是回文!!\n");
	else
		printf("不是回文!!\n"); 
	return 0;
}

//程序只执行一半的问题 

 

staskPush 里的 if 没写大括号吧?就执行了一句