(复习考研的休息区,心血来潮,写点代码)
三个规则:
1、不使用c++ stl库进行书写
2、最好基于严蔚敏老师的数据结构
3、最好使用malloc和realloc动态分配内存
(如果有问题或者是有没有实现的操作,请大家提出来)
cpp
#include<iostream>
#include<cstring>
using namespace std;
const int INF = 0x3f3f3f3f3f;
#define N 100
#define offset 10
typedef struct
{
int *base;
int *top; // 永远指在第一个元素的上方
int size;
}SqStack;
void InitStack(SqStack &S)
{
S.base = (int *)malloc(N * sizeof(int));
S.top = S.base;
S.size = N;
}
int GetTop(SqStack &S)
{
if(S.top == S.base) return INF;
return *(S.top - 1);
}
void Push(SqStack &S , int e)
{
if(S.top - S.base >= S.size)
{
S.base = (int *)realloc(S.base , (S.size + offset) * sizeof(int));
S.top = S.base + S.size;
S.size += offset;
}
*S.top = e;
S.top ++;
}
int Pop(SqStack &S)
{
if(S.top == S.base) return INF;
return * --S.top;
}
int main()
{
SqStack s;
InitStack(s);
for(int i = 1;i <= 10;i ++)
Push(s , i); // 最后从底向上的序列是1、2、3、4、5、6、7、8、9、10
cout << "当前弹出的是:" << Pop(s) << endl; // 10
cout << "当前弹出的是:" << Pop(s) << endl; // 9
cout << "当前弹出的是:" << Pop(s) << endl; // 8
}