算法学习之旅,初级篇(21)--栈的实现

来源:互联网 发布:mac 连接文件服务器 编辑:程序博客网 时间:2024/05/16 18:09

介绍

使用c实现栈的功能。

分析

实现入栈,出栈,初始化,获得栈顶元素。

代码

#include<stdio.h>
#include<stdlib.h>
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 100
#define OK 1
#define ERROR -1
typedef int SElemType; 
typedef struct
{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
int InitStack(SqStack &S)
{
S.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));
if(!S.base)
exit(0);
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return OK;
}
//压栈
int Push(SqStack &S,SElemType e)
{
if(S.top-S.base>=S.stacksize)
{
S.base=(SElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));
if(!S.base)
exit(0);
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
(*S.top)=e;
(S.top)++;
return OK;
}
//出栈
int Deush(SqStack &S,SElemType &e)
{
if(S.top==S.base)
return ERROR;
(S.top)--;
e=(*S.top);

return OK;
}
//获得top元素
int GetTop(SqStack S,SElemType &e)
{
if(S.top==S.base)
return ERROR;
(S.top)--;
e=(*S.top);

return OK;


}
int main()
{
SqStack S;
int m_e=2;
InitStack(S);
for(int i=0;i<10;i++)
Push(S,i);
for(int i=0;i<10;i++)
{
Deush(S,m_e);
printf("%d ",m_e);


}
system("pause");
return 0;
}

遇到的问题

exit是一个函数,进程退出时会有一个值,exit函数的参数就是指明进程退出的返回值,操作系统根据这个值来判断是否是正常退出。你也可以通过GetExitCodeProcess来获取这个值(windows下),一般情况下退出值是0表示正常(exit(0)),其它情况都是不正常的。
原创粉丝点击