- 7
- 0
- 约1.57千字
- 约 3页
- 2017-12-24 发布于河南
- 举报
栈的创建及其基本操作
#includestdio.h
#includemalloc.h
#includestdlib.h
#define MAX_SIZE 100
#define SIZE 10
#define OK 1
#define ERROR 0
#define OVERFLOW 0
typedef struct
{
int *base;
int *top;
int stacksize;
}Sqstack;
int InitStack(Sqstack s)
{
s.base=(int*)malloc(MAX_SIZE*sizeof(int));
if(!s.base)
exit(OVERFLOW);
s.top=s.base;
s.stacksize=MAX_SIZE;
return OK;
}
int DestoryStack(Sqstack s)
{
free(s.base);
/*如果采用链表,因为每个节点是单独new出来的,那自然需要每个节点都进行释放
如果是采用数组,因为空间是统一new的,自然就只需要free一次了*/
// free(s.top);
return OK;
}
int ClearStack(Sqstack s)
{
s.top=s.base;
return OK;
}
int StackEmpty(Sqstack s)
{
if(s.top!=s.base)
return false;
else
return true;
}
int StackLength(Sqstack s)
{
int length=0;
if(s.top==s.base)
return 0;
// length=s.top-s.base;//亦可以
for(int *i=s.base;i!=s.top;i++)
++length;
return length;
}
int GetTop(Sqstack s,int e)
{
if(s.top==s.base)
return ERROR;
e=*(s.top-1);
return e;
}
int Push(Sqstack s,int e)
{
if(s.top-s.base = MAX_SIZE)
{
s.base=(int*)realloc(s.base,(s.stacksize+SIZE)*sizeof(int));
if(!s.base)
exit(OVERFLOW);
s.top=s.base+s.stacksize;//s.base可能换了个地址
s.stacksize+=SIZE;
}
*s.top++=e;
return OK;
}
int Pop(Sqstack s,int e)
{
if(s.top==s.base)
return ERROR;
e=*(--s.top);
return e;
}
int main()
{
Sqstack s;
int e=0;
InitStack(s);
Push(s,1);
Push(s,2);
//ClearStack(s);
for(int *i=s.base;i!=s.top;i++)
printf(%d\n,*i);
printf(%d\n,StackLength(s));
Pop(s,e);
for(int *j=s.base;j!=s.top;j++)
printf(%d\n,*j);
printf(%d\n,e);
DestoryStack(s);
return 0;
}
您可能关注的文档
最近下载
- (高清版)DB31∕T 1487-2024 国际医疗服务规范.docx VIP
- 精益管理措施在医院手术室医用耗材管理中的应用.pdf VIP
- 2026及未来5年中国商务男装市场运行态势及战略咨询报告.docx
- 泸州市高2023级(2026届)高三(一诊)数学试题(含标准答案).pdf
- 新城地产商开目标成本主要科目价格测算标准-定稿.pptx VIP
- 12月1日艾滋病宣传日活动方案模板(集锦5篇).docx VIP
- 2024年湖南铁道职业技术学院单招计算机测试模拟题库必考题.docx VIP
- 遗产分割起诉状.docx VIP
- 2021年重庆市中考物理真题(a卷).pdf VIP
- 2025年度民主生活会对照检查材料8篇五个带头合集.docx VIP
原创力文档

文档评论(0)