栈的应用--错误
对string的用法不太清楚,用了strcmp也得不到结果自己写了也总是输出1,我想应该是条件判断那儿,可是也不知道怎么改
栈的实现没问题,我试过了,麻烦大家看看我写的判等函数的条件
我的程序:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <iostream.h>
#include <string.h>
#define MAX 1000
#define TRUE 1
#define FALSE -1
#define STACK_INIT_SIZE 100//初始分配量
#define STACKINCREMENT 10//分配增量
typedef struct ///////定义结构
{
char *base;
char *top;
char stacksize;
}SqStack;
void InitStack(SqStack &S)///初始化栈
{
S.base=(char *)malloc(STACK_INIT_SIZE *sizeof(char));
if(!S.base)exit(1);
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
}
int GetTop(SqStack &S,char &e)///获得栈顶元素
{
if(S.top==S.base)return 0;
e=*(S.top-1);
return e;
}
void Push(SqStack &S,char e)///入栈
{
if(S.top-S.base>=S.stacksize)
{
S.base=(char *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(char));
if(!S.base)exit(1);
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top=e;
S.top++;
}
int Pop(SqStack &S,char &e)///出栈
{
if(S.top==S.base)exit(1);
e=* --S.top;
return e;
}
bool StackEmpty(SqStack &S)//判空
{
if(S.base==S.top)return true;
return false;
}
/*void Conversion()
{
int N,e;
SqStack S;
InitStack(S);
printf("input the number which you want to conver:");
scanf("%d",&N);
while(N)
{
Push(S,N%2);
N=N/2;
}
while(!StackEmpty(S))
{
Pop(S,e);
printf("%d",e);
}
}*/
int Strequl(char str[],char str1[])
{
int i,j;
// int length0=strlen(str);
// int length1=strlen(str1);
// if(length0 != length1)return FALSE;
for(i=0,j=0;str[i]!='\0' && str1[j]!='\0';i++ ,j++)//这儿的条件有问题吧,可是我不知道怎么改啊
{
if(str[i]!=str1[j])
return FALSE;
}
return TRUE;
}
/*bool Strequl(char str[],char str1[])
{
if(strcmp(str,str1)==0)
{
return true;
}
return false;
}*/
int Huiwen()
{
int i;
char ch;
char str[MAX],str1[MAX];
SqStack S;
InitStack(S);
printf("input your string:");
gets(str);
int length=strlen(str);
for(i=0;i<length;i++)
cout<<str[i];
cout<<endl;
int j=0;
// char str1[length];
for(i=0;i<=length;i++)
Push(S,str[i]);
while(!StackEmpty(S))
{
Pop(S,ch);
str1[j]=ch;
j++;
}
for(i=1;i<=length;i++)
cout<<str1[i];
cout<<endl;
// getch();
// cout<<strcmp(str,str1);
cout<<Strequl(str,str1);
return 0;
}
int main()
{
// Conversion();
Huiwen();
return 0;
}