⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 栈的顺序存储结构.txt

📁 栈的顺序存储结构
💻 TXT
字号:
#include <cstdlib>
#include <iostream>
#include<stdlib.h>
using namespace std;
typedef int ElemType;
struct Stack{
       ElemType *stack;//存栈元素 
       int top;//存栈顶元素下标位置 
       int MaxSize;//存储栈的最大长度 
       };
void InitStack(Stack& S)//初始化栈为空 
      {S.MaxSize=10;
       S.stack=new ElemType[S.MaxSize];//动态分配存储空间 
       if(!S.stack){
           cerr<<"动态存储分配失败"<<endl;
           exit(1);
                   }
            S.top=-1;
      }
void Push(Stack& S,ElemType item)//元素进栈 
{
     if(S.top==S.MaxSize-1){
          int k=sizeof(ElemType);
          S.stack=(ElemType*)realloc(S.stack,2*S.MaxSize);
          S.MaxSize=2*S.MaxSize;
          }
          S.top++;
          S.stack[S.top]=item;
} 
ElemType Pop(Stack &S)//删除栈顶元素并返回 
{if(S.top==-1)
        {
        cerr<<"stack is empty!"<<endl;
        exit(1);
             }
        S.top--;
        return S.stack[S.top+1];
}
ElemType Peek(Stack& S)//读取栈顶元素的值 
{if(S.top==-1){
               cerr<<"Stack is empty"<<endl;
               exit(1);}
               return S.stack[S.top];
}
bool EmptyStack(Stack& S)//判断栈是否为空 
{
     return S.top==-1;
  }

void ClearStack(Stack& S)//清除栈中所有元素 
{           if(S.stack){
             delete []S.stack;
             S.stack=0;
             }
 S.top=-1;
 S.MaxSize=0;
}

int main(int argc, char *argv[])
{Stack s;
 InitStack(s);
 int a[8]={3,8,5,17,9,30,15,22};
 int i;
 for(i=0;i<8;i++) Push(s,a[i]);
 cout<<Pop(s); cout<<' '<<Pop(s)<<endl;
 Push(s,68);
 cout<<Peek(s);cout<<' '<<Pop(s)<<endl;
 while(!EmptyStack(s)) cout<<Pop(s)<<' ';
 cout<<endl;
 ClearStack(s);


    system("PAUSE");
    return EXIT_SUCCESS;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -