您的位置:首页 > 其它

利用数组实现栈的一些操作

2014-08-31 16:49 302 查看
//Filename:StackArray.cpp
//Writed by CaoLichen
//本程序利用数组实现栈的各种操作

#include<stdio.h>
#include<stdlib.h>

#define MaxSize 100								//数组上限

//定义顺序栈类型
typedef struct
{
int data[MaxSize];							//
int top;									//栈顶指针
}SArray;

//初始化
SArray * InitStack(SArray *s)
{
s = (SArray *)malloc(sizeof(SArray));
s->top = -1;								//栈顶指针初始化为-1
return s;									//返回栈地址
}

//进栈
void Push(SArray *s, int data)
{
if(s->top == MaxSize-1){
printf("栈溢出,进栈失败\n");
return;
}

s->top ++;
s->data[s->top] = data;
printf("进栈成功!\n");
}

//出栈
void Pop(SArray *s)
{
if(s->top == -1){
printf("栈为空,出栈失败");
return ;
}

s->top --;
printf("出栈成功\n");
}

//打印栈
void PrintStack(SArray *s)
{
int num = s->top;
for(; num > -1; num --){
printf("%d ",s->data[num]);
}

printf("\n打印栈成功!\n");
}

//销毁栈
void ClearStack(SArray *s)
{
free(s);
}

//求栈的长度
int LengthStack(SArray *s)
{
return(s->top + 1);
}

int main()
{
SArray *s;
s = NULL;
s = InitStack(s);							//初始化

int i;
for(i = 0; i < 20; i ++){
Push(s,i);
PrintStack(s);
}

for(i = 0; i < 20; i ++){
Pop(s);
PrintStack(s);
}

ClearStack(s);

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: