在C++中堆栈实现
时间:2020-02-23 14:41:54 来源:igfitidea点击:
本文是关于C++中的数组堆栈实现。
堆栈是抽象数据类型
堆栈是一个有序数据结构,用于存储Lifo中的数据类型(首先换止)订单。
这意味着进入持续的元素首先退出(已处理)。
这就像一个同心环的塔保持在另一个。
当然,当我们开始一个接一个地将它们删除一个(例如:河内塔)时,将首先挑选最后一个。
堆栈是一种类似的数据结构(抽象数据类型,简短的ADT),其中插入和删除都在相同的结束时完成,即顶部。
堆栈只持有类似的数据类型。
插入过程命名为PUSH删除过程名为POP
堆栈上的操作
type_t =任何数据类型
基本操作:
PUSH(类型_t数据):它将数据类型type_t的数据插入到堆栈
type_t pop():从堆栈中删除最顶部元素并返回它
其他操作:
type_t top():返回最顶层元素
bool isempty():如果堆栈为空,则返回true,否则返回false
bool arfull():返回true如果stack已满,则返回false
int size():返回堆栈的大小
使用C++中的数组堆栈实现
准备工作:1.
Top变量2.数组即堆栈array,以便使用阵列实现堆栈我们需要做的是实现这些操作。
以下是详细的代码。
#include <bits/stdc++.h> using namespace std; #define MAX_SIZE 1024 //declare our pre-reuisites int stack_array[MAX_SIZE]; //globally declared array to act like stack int top=-1; //top variavle initialized to -1 for empty stack //implement stack operations //1. implement isEmpty() bool isEmpty(){ if(top==-1) //empty stack return true; else return false; } //2. Implement isFull() bool isFull(){ if(top==MAX_SIZE-1) return true; else return false; } //3. Implement push operation void push(int data){ if(isFull()){ cout<<"Stack is full\n"; return; } else{ stack_array[++top]=data;//first top is increased by 1 and then stack[top]=data cout<<data<<" is pushed\n"; } } //4. Implement Pop operation int pop(){ if(isEmpty()){ cout<<"Stack is empty\n"; return INT_MIN; } else{ return stack_array[top--]; //top is decreased after popping } } //5. implement size function int size(){ return top+1; } //6. implement top int top_stack(){ if(isEmpty()){ cout<<"stack is empty\n"; return INT_MIN; } else return stack_array[top]; } //main function int main(){ //menu for operations //press 1 for push (with data) //press 2 for pop() //press 3 for top() //press 4 for size() //press 0 to exit() cout<<"press 1 for push\n"; cout<<"press 2 for pop()\n"; cout<<"press 3 for top()\n"; cout<<"press 4 for size()\n"; cout<<"press 0 for exit\n"; int choice; cout<<"press your choice\n"; cin>>choice; while(choice){ if(choice==1){ int data; cout<<"Enter element\n"; cin>>data; push(data); } else if(choice==2){ int item=pop(); if(item==INT_MIN){} else cout<<"Popped element: "<<item<<endl; } else if(choice==3){ int item=top_stack(); if(item==INT_MIN){} else cout<<"Top element: "<<item<<endl; } else if(choice==4){ cout<<"Size is: "<<size()<<endl; } else cout<<"Invalid number, try again!\n"; cout<<"press your choice\n"; cin>>choice; } cout<<"Exiting...\n"; return 0; }