每个数据结构包含
![](/icons/24019de.gif)
概念
![](/icons/24019dou.gif)
代码和解释
特别注意 2叉树
在本教程中
![](/icons/24019dou.gif)
我假设大家都知道如何使用C
![](/icons/24019jiajia.gif)
![](/icons/24019de.gif)
类进行工作
![](/icons/24019dou.gif)
![](/icons/24019yinwei.gif)
我所有
![](/icons/24019de.gif)
数据结构
![](/icons/24019dou.gif)
要立足于他们
![](/icons/24019dou2.gif)
我遇到过有关数据结构
![](/icons/24019de.gif)
教程
![](/icons/24019dou.gif)
但是很难找到
![](/icons/24019yi.gif)
个使用OOP来编写
![](/icons/24019de.gif)
![](/icons/24019dou2.gif)
因此
![](/icons/24019dou.gif)
这其中将主要集中于用
![](/icons/24019yi.gif)
个类来编写数据结构
在本教程
![](/icons/24019dou.gif)
我们包括以下基本数据结构:
1.堆栈
2.队列
3.链表
4. 2叉数
现在就开始吧
1)栈
在编写代码时
![](/icons/24019dou.gif)
堆栈是最常用
![](/icons/24019de.gif)
数据结构
![](/icons/24019dou2.gif)
它
![](/icons/24019de.gif)
概念简单
![](/icons/24019dou.gif)
编写也比较简单
![](/icons/24019dou2.gif)
有这么
![](/icons/24019yi.gif)
个情况
![](/icons/24019dou.gif)
桌子上有堆成
![](/icons/24019yi.gif)
堆
![](/icons/24019de.gif)
5本书
![](/icons/24019dou.gif)
你想增加
![](/icons/24019yi.gif)
本
![](/icons/24019dou2.gif)
应该如何做?只要把书放在顶端就可以了
![](/icons/24019dou2.gif)
如果你想从这堆书中取出第3本呢?你只要
![](/icons/24019yi.gif)
本接着
![](/icons/24019yi.gif)
本把书移到顶端
![](/icons/24019dou.gif)
直到第3本书处在顶端
![](/icons/24019dou2.gif)
然后取走第3本书
![](/icons/24019dou.gif)
并使其他处在顶端
你已经注意到我使用顶端这个词语
![](/icons/24019dou2.gif)
没错
![](/icons/24019dou.gif)
顶端(栈顶)对于堆栈至关重要
![](/icons/24019de.gif)
![](/icons/24019dou2.gif)
堆栈只允许从顶端加入数据
![](/icons/24019dou.gif)
出栈/退栈也是从栈顶
![](/icons/24019dou2.gif)
就是这么简单
![](/icons/24019dou2.gif)
那什么情况使用堆栈?堆栈被用在每
![](/icons/24019yi.gif)
个进程中
![](/icons/24019dou2.gif)
每
![](/icons/24019yi.gif)
个进程都
![](/icons/24019yi.gif)
个堆栈
![](/icons/24019dou.gif)
数据和地址从堆栈中被取出来/添加进来
![](/icons/24019dou2.gif)
栈顶规则在这里也符合
![](/icons/24019dou2.gif)
ESPRegister添加
![](/icons/24019yi.gif)
个指针
![](/icons/24019dou.gif)
指向栈顶
![](/icons/24019dou2.gif)
无论如何
![](/icons/24019dou.gif)
解释进程中
![](/icons/24019de.gif)
堆栈如何工作
![](/icons/24019dou.gif)
已超出本教程范围
![](/icons/24019dou.gif)
让我们开始写数据结构
![](/icons/24019dou2.gif)
在开始的前
![](/icons/24019dou.gif)
请大家记住
![](/icons/24019yi.gif)
些堆栈术语
![](/icons/24019dou2.gif)
向堆栈插入新元素成为入栈
![](/icons/24019dou.gif)
从堆栈中删除元素成为出栈
#
![](/icons/24019include.gif)
<iostream>
using
![](/icons/24019namespace.gif)
std;
#
![](/icons/24019define.gif)
MAX10//MAXIMUMSTACKCONTENT
![](/icons/24019class.gif)
stack
{
private:
![](/icons/24019int.gif)
arr[MAX];//ContainsalltheData
![](/icons/24019int.gif)
top;//ContainslocationofTopmostDatapushedontoStack
public:
stack
![](/icons/24019kh.gif)
//Constructor
{
top=-1;//SetstheTopLocationto-1indicatinganemptystack
} [Page]
voidpush(
![](/icons/24019int.gif)
a)//Pushie.AddValueFunction
{
top
![](/icons/24019jiajia.gif)
;//incrementtoby1
![](/icons/24019if.gif)
(top<MAX)
{
arr[top]=a;//IfStackisVacantstoreValueinArray
}
{
cout<<\"STACKFULL!!\"<<endl;
top--;
}
}
![](/icons/24019int.gif)
pop
![](/icons/24019kh.gif)
//DeleteItem.Returnsthedeleteditem
{
![](/icons/24019if.gif)
(top
![](/icons/24019dd.gif)
-1)
{
cout<<\"STACKISEMPTY!!!\"<<endl;
![](/icons/24019return.gif)
NULL;
}
{
![](/icons/24019int.gif)
data=arr[top];//SetTopmostValueindata
arr[top]=NULL;//SetOriginalLocationtoNULL
top--;//Decrementtopby1
![](/icons/24019return.gif)
data;//Returndeleteditem [Page]
}
}
};
![](/icons/24019int.gif)
![](/icons/24019main.gif)
{
stacka;
a.push(3);
cout<<\"3isPushed\\n\";
a.push(10);
cout<<\"10isPushed\\n\";
a.push(1);
cout<<\"1isPushed\\n\\n\";
cout<<a.pop
![](/icons/24019kh.gif)
<<\"isPopped\\n\";
cout<<a.pop
![](/icons/24019kh.gif)
<<\"isPopped\\n\";
cout<<a.pop
![](/icons/24019kh.gif)
<<\"isPopped\\n\";
![](/icons/24019return.gif)
0;
}
Output:
3isPushed
10isPushed
1isPushed
1isPopped
10isPopped
3isPopped
我们可以很清楚
![](/icons/24019de.gif)
看到最后入栈
![](/icons/24019de.gif)
数据第
![](/icons/24019yi.gif)
个出栈
![](/icons/24019dou2.gif)
这就是为什么堆栈被成为LIFO(后进先出
![](/icons/24019dou.gif)
LastInFirstOut)
![](/icons/24019dou2.gif)
我猜你也明白为什么了
让我们看看如何编译、执行此
![](/icons/24019chengxu.gif)
![](/icons/24019de.gif)
![](/icons/24019dou2.gif)
我们首先创建
![](/icons/24019yi.gif)
个叫top
![](/icons/24019de.gif)
变量
![](/icons/24019dou.gif)
使它处在栈顶位置
![](/icons/24019dou2.gif)
赋值-1
![](/icons/24019dou.gif)
表示堆栈是空
![](/icons/24019de.gif)
![](/icons/24019dou2.gif)
当有数据输入
![](/icons/24019dou.gif)
top自动加1
![](/icons/24019dou.gif)
并把数据存入arr
![](/icons/24019shuzu.gif)
中
![](/icons/24019dou2.gif)
对于这个数据结构有
![](/icons/24019yi.gif)
个缺点
![](/icons/24019dou2.gif)
我们最多只能放10个元素
![](/icons/24019dou2.gif)
如果我们要放多余10个元素呢?在这种情况下
![](/icons/24019dou.gif)
我们要结合链表来将
![](/icons/24019dou.gif)
后面将会说到
![](/icons/24019dou2.gif)
现在
![](/icons/24019dou.gif)
![](/icons/24019yi.gif)
旦你这个人
![](/icons/24019de.gif)
权利
![](/icons/24019dou.gif)
让我们进行了队列数据结构
延伸阅读
最新评论