大学的时候没有志于计算机软件的开发,好多课程都马马虎虎的过去了,只能说学过,至于理解程度只能用惨不忍睹来形容,工作后想要加强数据结构与算法的学习,这便是写这篇文章的目的了,这一部分是关于栈的。
按照严书自己模仿的栈的实现:
#include<iostream> #include"stdlib.h" using namespace std; #define STACK_INIT_SIZE 100; #define STACKINCREMENT 10; typedef struct SqStack { float *base; float *top; int stacksize; }SqStack; int main() { return 0; } int InitStack (SqStack &S); void DestroyStack (SqStack &S); void ClearStack (SqStack &S); void StackEmpty (SqStack &S); int StackLength (SqStack S); int GetTop(SqStack S, float &e); int Push(SqStack &S, float e); int Pop(SqStack &S, float &e); void StackTraverse(SqStack S, float *visit()); int InitStack(SqStack &S) { S.base = (float *)malloc(100 * sizeof(float)); if (!S.base) { return -1; } S.top = S.base; S.stacksize = STACK_INIT_SIZE; return 0; } int GetTop(SqStack S, float &e) { if (S.top == S.base) { return -1; } e = *(S.top - 1); return 0; } int Push(SqStack &S, float e) { if (S.top - S.base >= S.stacksize) //栈满,追加空间 { S.base = (float *)realloc(S.base, (S.stacksize + 10) * sizeof(float)); if (!S.base) { return -1; } S.top = S.base + S.stacksize; S.stacksize += STACK_INIT_SIZE; } *S.top++ = e; return 0; } int Pop(SqStack &S, float &e) { if (S.top == S.base) { return -1; } e = *--S.top; return 0; } 在c中,每次想要使用栈都要自己定义,很麻烦哈, 在C++中,我们的STL中就有了stack,妈妈再也不用担心我对栈的使用了。