这有一个C++程序,我想分开,怎么分?要求.h头文件存放数据结构的定义;.cpp文件存放算法实现代码以及main
#include<iostream>#include<cstdio>#include<cstdlib>usingnamespacestd;#defineOK1#defin...
#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
# define OK 1
# define OVERFLOW 0
# define ERROR 0
typedef char ElemType;
typedef int Status;
# define STACK_INIT_SIZE 100
# define STACKINCRENENT 10
typedef struct
{
ElemType *base;
ElemType *top;
int stacksize;
}SqStack;
Status InitStack(SqStack &s)
{
s.base=(ElemType *)malloc(STACK_INIT_SIZE*sizeof(ElemType));
if(!s.base) exit(OVERFLOW);
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
return OK;
}
Status Push(SqStack &s,ElemType e)
{
if(s.top-s.base>=s.stacksize)
{
s.base=(ElemType *)realloc(s.base,(s.stacksize+STACKINCRENENT)*sizeof(ElemType));
if(!s.base) exit(OVERFLOW);
s.top=s.base+s.stacksize;
s.stacksize+=STACKINCRENENT;
}
*s.top++=e;
return OK;
}
Status Pop(SqStack &s,ElemType &e)
{
if(s.top==s.base)return ERROR;
e=*--s.top;
return OK;
}
bool StackEmpty(SqStack s)
{
if(s.top==s.base)
return true;
else
return false;
}
Status ClearStack(SqStack &s)
{
ElemType *p;
if(s.top!=s.base)
{
p=s.top;
p--;
free(s.top);
s.top=p;
}
s.top=s.base;
return OK;
}
Status DestroyStack(SqStack s)
{
ElemType *p;
if(s.top!=s.base)
{
p=--s.top;
free(s.top);
s.top=p;
}
free(s.top);
free(s.base);
return OK;
}
void LineEdit() {
//利用字符栈S,从终端接收一行并传送至调用过程的数据区。
char ch,*temp;
SqStack S;
InitStack(S); //构造空栈S
printf("请输入一行(#:退格;@:清行):\n");
ch = getchar(); //从终端接收第一个字符
while (ch != EOF) { //EOF为全文结束符
while (ch != EOF && ch != '\n') {
switch (ch) {
case '#': Pop(S, ch); break; // 仅当栈非空时退栈
case '@': ClearStack(S); break; // 重置S为空栈
default : Push(S, ch); break; // 有效字符进栈,未考虑栈满情形
}
ch = getchar(); // 从终端接收下一个字符
}
temp=S.base;
while(temp!=S.top) {
printf("%c",*temp);
++temp;
}
// 将从栈底到栈顶的栈内字符传送至调用过程的数据区;
ClearStack(S); // 重置S为空栈
printf("\n");
if (ch != EOF) {
printf("请输入一行(#:退格;@:清行):\n");
ch = getchar();
}
}
DestroyStack(S);
}
int main()
{
LineEdit();
return 0;
} 展开
#include<cstdio>
#include<cstdlib>
using namespace std;
# define OK 1
# define OVERFLOW 0
# define ERROR 0
typedef char ElemType;
typedef int Status;
# define STACK_INIT_SIZE 100
# define STACKINCRENENT 10
typedef struct
{
ElemType *base;
ElemType *top;
int stacksize;
}SqStack;
Status InitStack(SqStack &s)
{
s.base=(ElemType *)malloc(STACK_INIT_SIZE*sizeof(ElemType));
if(!s.base) exit(OVERFLOW);
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
return OK;
}
Status Push(SqStack &s,ElemType e)
{
if(s.top-s.base>=s.stacksize)
{
s.base=(ElemType *)realloc(s.base,(s.stacksize+STACKINCRENENT)*sizeof(ElemType));
if(!s.base) exit(OVERFLOW);
s.top=s.base+s.stacksize;
s.stacksize+=STACKINCRENENT;
}
*s.top++=e;
return OK;
}
Status Pop(SqStack &s,ElemType &e)
{
if(s.top==s.base)return ERROR;
e=*--s.top;
return OK;
}
bool StackEmpty(SqStack s)
{
if(s.top==s.base)
return true;
else
return false;
}
Status ClearStack(SqStack &s)
{
ElemType *p;
if(s.top!=s.base)
{
p=s.top;
p--;
free(s.top);
s.top=p;
}
s.top=s.base;
return OK;
}
Status DestroyStack(SqStack s)
{
ElemType *p;
if(s.top!=s.base)
{
p=--s.top;
free(s.top);
s.top=p;
}
free(s.top);
free(s.base);
return OK;
}
void LineEdit() {
//利用字符栈S,从终端接收一行并传送至调用过程的数据区。
char ch,*temp;
SqStack S;
InitStack(S); //构造空栈S
printf("请输入一行(#:退格;@:清行):\n");
ch = getchar(); //从终端接收第一个字符
while (ch != EOF) { //EOF为全文结束符
while (ch != EOF && ch != '\n') {
switch (ch) {
case '#': Pop(S, ch); break; // 仅当栈非空时退栈
case '@': ClearStack(S); break; // 重置S为空栈
default : Push(S, ch); break; // 有效字符进栈,未考虑栈满情形
}
ch = getchar(); // 从终端接收下一个字符
}
temp=S.base;
while(temp!=S.top) {
printf("%c",*temp);
++temp;
}
// 将从栈底到栈顶的栈内字符传送至调用过程的数据区;
ClearStack(S); // 重置S为空栈
printf("\n");
if (ch != EOF) {
printf("请输入一行(#:退格;@:清行):\n");
ch = getchar();
}
}
DestroyStack(S);
}
int main()
{
LineEdit();
return 0;
} 展开
2个回答
展开全部
你自己都说了,新建个类,在头文件里写变量和函数等的声明,在源文件里写定义,初始化就可以了,内容都不用改,只是放两个地方而已,这还需要问吗
追问
我不懂你说的啊,你说具体怎么做才能分开呀
追答
int iNum; 这是声明
iNum = 0; 这是定义
void Plus(int iNum, int iValue ); 这是函数声明
int Plus(int iNum , int iValue) 这是函数的定义
{
int iTemp = iNum + iValue;
return iTemp;
}
声明放头文件,定义放源文件,如果不懂,去网上找找声明和定义的区别,看看类的定义,我也没办法了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询