堆栈简介堆栈是一种线性存储结构。
它具有以下特征:根据“后进先出(LIFO,后进先出)”来输入和退出堆栈中的数据。
方法。
向堆栈中添加/删除数据时,只能从堆栈的顶部进行操作。
堆栈通常包括三个操作:push,peek和pop。
将元素推入堆栈。
peek-返回堆栈的顶部元素。
弹出返回并删除堆栈操作的顶部元素。
1.堆栈示意图堆栈中的数据为30→20→10。
2.从堆栈中弹出弹出之前:堆栈的顶部元素为30。
这时,堆栈中的元素顺序为30→20→10。
弹出后:弹出30后,堆栈的顶部元素变为20。
这时,堆栈中的元素顺序为20→10。
3.推入堆栈推入堆栈之前:堆栈的顶部元素为20。
这时,堆栈中的元素顺序为20→10。
堆叠之后:堆叠40个之后,堆叠的顶部元素变为40个。
此时,堆叠中的元素顺序为40→20→10。
堆栈的C实现1数组实现的堆栈,并且只能存储int数据。
实现代码:运行结果:tmp = 30tmp = 20stack size()= 3402010结果描述:本示例中的堆栈由“ array”实现!由于已在代码中给出了详细的注释,因此此处将不解释该功能。
仅简要介绍主要功能main的逻辑:在主要功能main中,首先按“ 10、20、30”按钮,然后再按一次。
依次进入堆栈。
此时,堆栈的数据为:30→20→10。
然后通过pop()返回堆栈的顶部元素; pop()操作不会更改堆栈中的数据。
此时,堆栈的数据仍为:30→20→10。
然后通过peek()返回并删除堆栈的顶部元素。
窥视操作后,堆栈数据为:20→10。
然后通过push(40)将40推入堆栈。
push(40)操作后,堆栈的数据为:40→20→10。
2由单链表实现的堆栈,并且只能存储int数据。
实施代码:代码描述:“运行结果”。
以及“主要功能主要逻辑”。
与“ C语言实现一”相同。
不同之处在于,本例中的堆栈是通过单链表实现的。
3用于双链表实现的堆栈,并且只能存储int数据实现代码:(1)双链表头文件(double_link.h)(2)双链表实现文件double_link.c)(3)双链表测试程序(dlink_stack.c)代码说明:“运行结果”以及“主要功能主要逻辑”。
与前两个示例相同。
区别在于,此示例中的堆栈是通过双向链表实现的。
4双向链表实现的堆栈可以存储任何类型的数据实现代码:(1)双向链表的头文件(double_link.h)(2)双向链表的实现文件(double_link.c)( 3)双链表(dlink_stack.c)的测试程序操作结果:id = 40,name = danid = 20,name = jodyid = 10,name = sky结果描述:本例中的堆栈是通过double实现的链表,可以存储任何类型的数据。
在示例中,结构类型的数据用于演示。
由于已在代码中给出了详细的注释,因此此处将不再介绍。
-END-来源:Blog Garden,作者skywang12345原地址https://www.cnblogs.com/skywang12345/p/3562239.html