数据结构定义一个栈并实现入栈和出栈操作的程序c语言完整版

问题描述:

数据结构定义一个栈并实现入栈和出栈操作的程序c语言完整版
1个回答 分类:综合 2014-09-28

问题解答:

我来补答
#include
#include
#include
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define ERROR 0
#define OK 1;
typedef int SElemType;
typedef struct
{
\x09SElemType *base;
\x09SElemType *top;
\x09int stacksize;
}SqStack;
// 初始化
int InitStack(SqStack &S)
{
\x09S.base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));
\x09if(!S.base)
\x09{
\x09\x09printf("!\n");
\x09\x09exit(ERROR);
\x09}
\x09S.top=S.base;
\x09S.stacksize=STACK_INIT_SIZE;
\x09printf("栈初始化完毕!\n");
\x09return OK;
}
// 入栈(插入元素)
int Push(SqStack &S,SElemType e)
{
\x09if(S.top-S.base>=S.stacksize)
\x09{
\x09\x09S.base=(SElemType *)malloc(S.stacksize+STACKINCREMENT*sizeof(SElemType));
\x09\x09if(!S.base)
\x09\x09{
\x09\x09\x09printf("存储分配失败!\n");
\x09\x09\x09exit(ERROR);
\x09\x09}
\x09\x09S.top=S.base+S.stacksize;
\x09\x09S.stacksize=S.stacksize+STACKINCREMENT;
\x09}
\x09*S.top=e;
\x09S.top++;
//\x09printf("入栈成功!\n");
\x09return OK;
}
// 出栈(删除栈顶元素)
int Pop(SqStack &S,SElemType &e)
{
\x09if(S.base==S.top)
\x09{
\x09\x09printf("栈空!\n");
\x09\x09return ERROR;
\x09}
\x09S.top--;
\x09e=*S.top;
\x09printf("出栈成功!\n");
\x09return OK;
}
// 栈顶元素
int GetTop(SqStack S,SElemType &e)
{
\x09if(S.base==S.top)
\x09{
\x09\x09printf("栈空!\n");
\x09\x09return ERROR;
\x09}
\x09e=*(S.top-1);
\x09return OK;
}
// 判断空栈
int Empty_SqStack(SqStack S)
{
\x09if(S.top==S.base)
\x09\x09printf("栈空!\n");
\x09else
\x09\x09printf("栈非空!\n");
\x09return OK;
}
// 置空
int ClearStack(SqStack &S)
{
\x09S.top=S.base;
\x09S.stacksize=STACK_INIT_SIZE;
\x09printf("置空!\n");
\x09return OK;
}
int main()
{
\x09SqStack Ss;
\x09SElemType e;
\x09InitStack(Ss);
\x09Empty_SqStack(Ss);
\x09printf("Input S_elem:(0结束)\n");
\x09scanf("%d",&e);
\x09while(e!=0)
\x09{
\x09\x09Push(Ss,e);
\x09\x09printf("Input S_elem:(0结束)\n");
\x09 scanf("%d",&e);
\x09}
\x09Empty_SqStack(Ss);
//\x09ClearStack(Ss);
//\x09Empty_SqStack(Ss);
\x09while(Ss.base!=Ss.top)
\x09{
\x09\x09GetTop(Ss,e);
\x09\x09printf("e=%d\n",e);
\x09\x09Pop(Ss,e);
\x09}
\x09Empty_SqStack(Ss);
\x09return 0;
}
 
 
展开全文阅读
剩余:2000
上一页:解题方法 技巧
下一页:过程3