我想把字符串a前半部分的字符串,赋值给栈,比如a的字符串为abba,然后栈S就存 ab,再把栈S取栈顶元素 赋给字符串数组b,b数组就有ba、为啥没有成功??求指出,目前显示的问题应该是我甚至都没有给栈成功复制。栈还是空的!
这是运行结果:
其实是要写一个回文串的判断,我卡在前面了,还没开始写回文串判断的算法嘞,但是我看运行结果,字符串b有被赋值,但是为什么 会显示出:S is empty?以及秉??求告诉我,以下是代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define OK 1
#define OVERFLOW -1
#define ERROW 0
#define MAXSIZE 10 //最大元素个数
typedef struct //储存结构
{char *base;
char *top;
int stacksize;
}Stack;
int InitStack(Stack &S) //初始化
{S.base=new char[MAXSIZE];
if (!S.base) exit(OVERFLOW);
S.top=S.base;
S.stacksize=MAXSIZE;
return OK;
}
int isEmpty(Stack &S) //判断是否为空
{if(S.top==S.base) return OK;
else return ERROW;
}
int isFull(Stack &S) //判断是否满
{if(S.top-S.base==MAXSIZE)
return OK;
else return ERROW;
}
int insert(Stack &S,char i)
{if(isFull(S)) return ERROW;
*(S.top++)=i;
return OK;
}
void outStack(Stack &S,char *p,int len)
{if(isEmpty) printf("S is empty\n");
for(int i=0;i<len;i++)
{*(p++)=*(--S.top);}}
int main()
{char a[10];
int i;
char *p;
int lenth,len;
printf("请输入字符串\n");
scanf("%s",a);
Stack S;
InitStack (S);
lenth=strlen(a);
p=a;
len=lenth/2;
for(i=0;i<len;i++)
{insert(S,*(p++));
}
char b[len];
p=b;
outStack (S,p,len);
printf("%s",b);
return 0;
}