/************************************************************************
*
* 文件名:2.2.1.cpp
*
* 文件描述:栈的顺序存储实现
*
* 创建人: fdk
* 时 间: 2018-07-30
*
* 版本号:1.0
*
* 修改记录:
*
************************************************************************/
#include <iostream>
#include <cstdlib>
/*定义数组的最大长度为100*/
#define MAXSIZE 100
using namespace std;
/*定义结构体*/
typedef struct
{
/*一维数组*/
int data[MAXSIZE];
/*记录栈顶元素位置的变量*/
int top;
}stacks;
/*生成空堆栈*/
stacks *CreateStack();
/*进行入栈操作*/
void Push(stacks *ptrs, int x);
/*进行出栈操作*/
int Pop(stacks *ptrs);
int main()
{
int i;
int j;
int a[] = {2, 4, 5, 1, -2, 4, 6, 10};
stacks *s = CreateStack();
/*循环进栈*/
cout << "进栈顺序为:";
for (i = 0; i < sizeof(a) / sizeof(a[0]); i++)
{
cout << a[i] << " ";
Push(s, a[i]);
}
cout << endl;
/*循环出栈*/
cout << "出栈顺序为:";
for (i = 0; i < sizeof(a) / sizeof(a[0]); i++)
{
cout << Pop(s) << " ";
}
cout << endl;
return 0;
}
/*生成空堆栈*/
stacks *CreateStack()
{
/*申请一个当前的结构,malloc函数向系统申请分配指定内存的空间*/
stacks *s = (stacks*)malloc(sizeof(stacks));
/*当前栈为空栈*/
s->top = -1;
return s;
}
/*进行入栈操作*/
void Push(stacks *ptrs, int x)
{
if (ptrs->top == MAXSIZE - 1)
{
cout << "当前栈满!" << endl;
return;
}
else
{
/*将值压入并将栈顶指针上移*/
ptrs->data[++(ptrs->top)] = x;
return;
}
}
/*进行出栈操作*/
int Pop(stacks *ptrs)
{
if (ptrs->top == -1)
{
cout << "栈空!" << endl;
exit(0);
}
else
{
/*返回栈顶元素并将指针下移*/
return (ptrs->data[(ptrs->top)--]);
}
}
栈的顺序存储实现-简单的进栈及出栈
猜你喜欢
转载自blog.csdn.net/fdkneverstoplearning/article/details/81291716
今日推荐
周排行