西安交大朱站立《数据结构——使用C语言》头文件系列——堆栈

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 /*该头文件包含exit()函数*/

#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;

}

}

相关文档
最新文档