栈的顺序存储及链式存储的分别实现

比较简单,代码留一下备用

数组实现:

//栈的顺序存储及实现
#include <iostream>
using namespace std;
#define MAXSIZE 100
class stack
{
private:
int arrayStack[MAXSIZE];
int top;
public:
stack();
~stack(){};
bool ClearStack();
bool IsEmpty();
int GetTop();
bool Push(int a);
bool Pop();
int StackLength();
void print();
};


stack::stack()
{
top = -1;
}
bool stack::IsEmpty()
{
return top == -1;
}
int stack::GetTop()
{
if (IsEmpty()) return -1;
else return arrayStack[top];
}
bool stack::ClearStack()
{
if (IsEmpty()) return false;
else {
top = -1;
return true;
}
}
int stack::StackLength()
{
return top + 1;
}
bool stack::Push(int a)
{
if (top == MAXSIZE - 1)
return false;
else
{
arrayStack[++top] = a;
}
}


bool stack::Pop()
{
if (IsEmpty()) return false;
else
{
top--;
return true;
}
}
void stack::print()
{
for (int i = 0; i <= top; i++)
{
cout<<arrayStack[i]<<" ";
}cout<<endl;
}

链式存储及实现:

//链栈
#include <iostream>
using namespace std;
struct Node
{
int val;
Node *next;
};
class stack
{
private:
Node *top;
int count;
public:
stack();
~stack(){}
bool Pop();
void Push(int a);
int GetTop();
bool IsEmpty();
void print();
};
stack::stack()
{
top = NULL;
int count = 0;
}
void stack::Push(int a)
{
Node *temp = new Node;
temp->val = a;
temp->next = top;
top = temp;
count++;
}
bool stack::Pop()
{
if (IsEmpty())
return false;
else
{
Node *temp = top;
top = top->next;
delete temp;
count--;
return true;
}
}
bool stack::IsEmpty()
{
return top == NULL;
}
int stack::GetTop()
{
if (IsEmpty())
return -1;
else
return top->val;
}
void stack::print()
{
Node *temp = top;
while (temp)
{
cout<<temp->val<<" ";
temp = temp->next;
}
cout<<endl;
}









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值