首页 / C++ / C++实现顺序栈和链栈
C++实现顺序栈和链栈
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C++实现顺序栈和链栈,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2320字,纯文字阅读大概需要4分钟。
内容图文
文章目录
一,栈的相关概念
1,栈的定义和特点
2,入栈和出栈
3,栈的应用
二,顺序栈的实现
#include<iostream>
using namespace std;
#define MaxSize 100
template<typename T>
class Stack
{
public:
Stack();
bool IsEmpty();
int GetLength();
int Clear();
void Push(T x);
void Pop();
~Stack();
private:
int top;
T *list;
};
template<typename T>
Stack<T>::Stack() //栈的初始化
{
top = 0;
list = new T[MaxSize];
}
template<typename T>
bool Stack<T>::IsEmpty() //判断栈是否为空
{
return top==0?1:0;
}
template<typename T>
int Stack<T>::GetLength() //获得栈中数据元素的个数
{
return top;
}
template<typename T>
int Stack<T>::Clear() //清空栈
{
top = 0;
}
template<typename T>
void Stack<T>::Push(T x) //入栈
{
if(top==MaxSize)
{
cout << "栈已满";
return;
}
else
{
list[top] = x;
top++;
}
}
template<typename T>
void Stack<T>::Pop() //出栈
{
if(top==0)
{
cout << "栈为空";
}
else
{
top--;
}
}
template<typename T>
Stack<T>::~Stack() //销毁栈
{
if(list)
{
delete list;
list = NULL;
}
}
int main()
{
}
三,链栈的实现
#include<iostream>
using namespace std;
template<typename T>
struct node //栈中存储的元素
{
T data; //元素的数据域
node* next; //指向下一个元素的指针
};
template<typename T>
class Stack
{
public:
Stack();
bool IsEmpty();
T GetTop();
void Push(const T a);
void Pop();
int GetLength();
~Stack();
private:
node<T>* top;
int count;
};
template<typename T>
Stack<T>::Stack() //链栈初始化
{
top = NULL;
count = 0;
}
template<typename T>
Stack<T>::~Stack() //链栈销毁
{
while(!IsEmpty())
{
Pop();
}
}
template<typename T>
bool Stack<T>::IsEmpty() //判断链栈是否为空
{
return count == 0;
}
template<typename T>
T Stack<T>::GetTop() //获得栈顶元素
{
if(!IsEmpty())
{
return top->data;
}
else
return 0;
}
template<typename T>
void Stack<T>::Push(const T a) //入栈
{
node<T>* s = new node<T>();
s->data = a;
s->next = top;
top = s;
count++;
}
template<typename T>
void Stack<T>::Pop() //出栈
{
if(IsEmpty())
{
cout << "栈为空";
}
else
{
node<T>* u = top;
top = top->next;
delete u;
count--;
}
}
template<typename T>
int Stack<T>::GetLength() //获得栈中元素个数
{
return count;
}
int main()
{
Stack<int> lists;
for(int i=1; i<6; i++)
{
lists.Push(i);
}
for(int i=0; i<3; i++)
{
lists.Pop();
}
lists.Push(6);
lists.Push(7);
lists.Pop();
int size = lists.GetLength();
for(int i=0; i<size; i++)
{
cout << lists.GetTop() << " ";
lists.Pop();
}
}
内容总结
以上是互联网集市为您收集整理的C++实现顺序栈和链栈全部内容,希望文章能够帮你解决C++实现顺序栈和链栈所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。