数据结构---栈
来源:互联网 发布:直通车卡首屏软件 编辑:程序博客网 时间:2024/05/02 00:49
转载自:http://blog.csdn.net/arrowcat/archive/2008/04/01/2235853.aspx
栈的实现代码及操作:
#include <malloc.h>
#include <stdio.h>
#define STACK_INIT_SIZE 100
#define INCREMENT 10
#define OVERFLOW -2
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
typedef int ElemType;
typedef struct SqStack
...{
ElemType *base;
int top;
int stacksize;
}SqStack;
//清空栈
int ClearStack(SqStack *s)
...{
s->top=-1;
return OK;
}
//判断是否为空
int StackEmpty(SqStack s)
...{
if(s.top==-1)
return TRUE;
else
return FALSE;
}
//初始化
int InitStack(SqStack *s)
...{
s->base=(ElemType *)malloc(STACK_INIT_SIZE*sizeof(ElemType));
if(!s->base)
return OVERFLOW;
s->top=-1;
s->stacksize=STACK_INIT_SIZE;
return OK;
}
//入栈
int Push(SqStack *s,ElemType e)
...{
if(s->top==s->stacksize-1)
...{
ElemType *newbase=(ElemType *)realloc(s->base,sizeof(ElemType)*(s->stacksize+INCREMENT));
if(!newbase)
return OVERFLOW;
s->base=newbase;
s->stacksize+=INCREMENT;
}
s->top++;
s->base[s->top]=e;
return OK;
}
//出栈
int Pop(SqStack *s,ElemType *e)
...{
if(StackEmpty(*s))
return ERROR;
*e=s->base[s->top];
s->top-=1;
return OK;
}
//栈顶元素
int GetTop(SqStack s,ElemType *e)
...{
if(s.top==-1)
return ERROR;
else
...{
*e=s.base[s.top];
return OK;
}
}
int main(int argc,char *argv[])
...{
int i;
ElemType elem;
SqStack s;
InitStack(&s);
for(i=0;i<5;i++)
...{
printf("input a number:");
scanf("%d",&elem);
Push(&s,elem);
printf(" ");
}
for(i=0;i<5;i++)
...{
if(Pop(&s,&elem)==OK)
...{
printf("%d ,",elem);
}
else
...{
printf("empty!");
break;
}
}
}
#include <stdio.h>
#define STACK_INIT_SIZE 100
#define INCREMENT 10
#define OVERFLOW -2
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
typedef int ElemType;
typedef struct SqStack
...{
ElemType *base;
int top;
int stacksize;
}SqStack;
//清空栈
int ClearStack(SqStack *s)
...{
s->top=-1;
return OK;
}
//判断是否为空
int StackEmpty(SqStack s)
...{
if(s.top==-1)
return TRUE;
else
return FALSE;
}
//初始化
int InitStack(SqStack *s)
...{
s->base=(ElemType *)malloc(STACK_INIT_SIZE*sizeof(ElemType));
if(!s->base)
return OVERFLOW;
s->top=-1;
s->stacksize=STACK_INIT_SIZE;
return OK;
}
//入栈
int Push(SqStack *s,ElemType e)
...{
if(s->top==s->stacksize-1)
...{
ElemType *newbase=(ElemType *)realloc(s->base,sizeof(ElemType)*(s->stacksize+INCREMENT));
if(!newbase)
return OVERFLOW;
s->base=newbase;
s->stacksize+=INCREMENT;
}
s->top++;
s->base[s->top]=e;
return OK;
}
//出栈
int Pop(SqStack *s,ElemType *e)
...{
if(StackEmpty(*s))
return ERROR;
*e=s->base[s->top];
s->top-=1;
return OK;
}
//栈顶元素
int GetTop(SqStack s,ElemType *e)
...{
if(s.top==-1)
return ERROR;
else
...{
*e=s.base[s.top];
return OK;
}
}
int main(int argc,char *argv[])
...{
int i;
ElemType elem;
SqStack s;
InitStack(&s);
for(i=0;i<5;i++)
...{
printf("input a number:");
scanf("%d",&elem);
Push(&s,elem);
printf(" ");
}
for(i=0;i<5;i++)
...{
if(Pop(&s,&elem)==OK)
...{
printf("%d ,",elem);
}
else
...{
printf("empty!");
break;
}
}
}
- 数据结构---栈
- 数据结构-栈
- 数据结构 栈
- 数据结构--栈
- 数据结构 栈
- 数据结构(栈)
- 数据结构栈
- 数据结构-栈
- 数据结构-----栈
- 数据结构-栈
- 【数据结构】栈
- 数据结构---->栈
- 数据结构---栈
- 数据结构--栈
- 数据结构----栈
- 数据结构--栈
- 【数据结构】 栈
- 数据结构 -- 栈
- 在RedHat Enterprise Linux5上安装MySQL
- 数据结构---顺序表
- 数据结构---链表
- Android之Activity 2
- 如何在windows程序中读取bios内容
- 数据结构---栈
- margin属性的四个方向的顺序
- 关于主对话框数据于子对话框数据的交换
- kbox1.03版
- 数据结构---队列
- 搜索spider对二叉查找树查找实验(中文翻译)
- 数据结构---字符串
- VS2005的复制网站功能
- 第三方控件个人理解