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

来源:互联网 发布:javascript中的事件 编辑:程序博客网 时间:2024/04/30 19:34

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

数组实现:

//栈的顺序存储及实现
#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;
}









原创粉丝点击