栈的实现与感悟

xiaoxiao2021-02-28  85

大学的时候没有志于计算机软件的开发,好多课程都马马虎虎的过去了,只能说学过,至于理解程度只能用惨不忍睹来形容,工作后想要加强数据结构与算法的学习,这便是写这篇文章的目的了,这一部分是关于栈的。

按照严书自己模仿的栈的实现:

#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,妈妈再也不用担心我对栈的使用了。

转载请注明原文地址: https://www.6miu.com/read-78000.html

最新回复(0)