西安交大朱站立《数据结构——使用C语言》头文件系列——堆栈
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
堆栈(StackCode.h)
typedef struct
{
DataType stack[MaxStackSize];
int top;
}SeqStack;
void StackInitiate(SeqStack *S);//初始化顺序堆栈
int StackNotEmpty(SeqStack S);//判断堆栈是否为空
int StackPush(SeqStack *S,DataType x);//入栈
int StackPop(SeqStack *S,DataType *d);//出栈
int StackTop(SeqStack S,DataType *d);//取栈顶元素
测试主函数(StackCode.cpp)
#include
#include
#define MaxStackSize 100 /*定义MaxStackSize为100*/ typedef int DataType; /*定义DataType为int数据类型*/ #include "StackCode.h"
//测试主函数
void main(void)
{
SeqStack myStack;
int i,x;
StackInitiate(&myStack);/*初始化*/
for(i=0;i<10;i++)
{
if(StackPush(&myStack,i+1)==0)/*入栈10个数据元素*/
{
printf("错误!\n");
return;
}
}
if(StackTop(myStack,&x)==0)
{
printf("错误!\n");
return;
}
else
printf("当前栈顶元素为:%d\n",x);
printf("依次出栈的元素序列如下:\n");
while (StackNotEmpty(myStack))
{
StackPop(&myStack,&x);//出栈
printf("%d ",x);//显示数据元素}
}
//成员函数
void StackInitiate(SeqStack *S)//初始化顺序堆栈{
S->top=0;
}
int StackNotEmpty(SeqStack S)//判断堆栈是否为空{/*为空返回0,非空返回1*/
if(S.top<=0) return 0;
else return 1;
}
int StackPush(SeqStack *S,DataType x)//入栈
{
if (S->top>=MaxStackSize)
{
printf("堆栈已满无法插入!\n");
return 0;
}
else
{
S->stack[S->top]=x;
S->top++;
return 1;
}
}
int StackPop(SeqStack *S,DataType *d)//出栈
{
if(S->top<=0)
{
printf("堆栈已空无法弹出!\n");
return 0;
}
else
{
S->top--;
*d=S->stack[S->top];
return 1;
}
}
int StackTop(SeqStack S,DataType *d)//取栈顶元素{
if (S.top<=0)
{
printf("堆栈已空!\n");
return 0;
}
else
{
*d=S.stack[S.top-1];
return 1;
}
}