栈(Stack),是一种特殊的后进先出线性表,其只能在一端进行插入(插入一般称为压栈、进栈或入栈)和删除(删除一般称为弹栈、退栈或出栈)操作,允许进行插入和删除操作的一端称为栈顶,另一端则称为栈底。栈,按照后进先出的原则存储数据,先进入的数据被压入栈底,后进入的数据则在栈顶,需要读取数据的时候,从栈顶开始弹出数据。当栈中没有元素时,称为空栈。
数据结构与算法(PHP实现) - 栈(Stack)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
<?php
class
Stack {
private
$stack ;
private
$size ;
public
function __construct() {
$this ->stack =
array ();
$this ->size = 0;
}
public
function push( $data ) {
$this ->stack[ $this ->size++] =
$data ;
return
$this ;
}
public
function pop() {
if
(! $this ->isEmpty()) {
$top
= array_splice ( $this ->stack, -- $this ->size,
1);
return
$top [0];
}
return
FALSE;
}
public
function getStack() {
return
$this ->stack;
}
public
function getTop() {
if
(! $this ->isEmpty()) {
return
$this ->stack[ $this ->size - 1];
}
return
FALSE;
}
public
function getSize() {
return
$this ->size;
}
public
function isEmpty() {
return
0 === $this ->size;
}
}
?>
|
示例代码
1
2
3
4
5
6
7
8
|
<?php
$stack
= new Stack();
$stack ->push(1)->push(2)->push(3)->push(4)->push(5)->push(6);
echo
'<pre>' , print_r( $stack ->getStack(), TRUE),
'</pre>' ;
$stack ->pop();
echo
'<pre>' , print_r( $stack ->getStack(), TRUE),
'</pre>' ;
?>
|
说明:PHP数组函数已有类似栈的功能函数存在:array_push(压栈)和、array_pop(弹栈)。
分享到:
相关推荐
数据结构 严蔚敏 栈 stack
用java实现的栈Stack类,不继承任何集合类,用对象数组实现
基于python的数据结构代码实现-栈Stack
数据结构实验报告 顺序栈操作验证(参考) 专业: 学号: 姓名: 一、顺序栈操作验证 1. 实验目的 掌握栈的顺序存储结构; 验证栈的操作特性; 掌握栈的基本操作实现方法。 2. 实验内容 建立含有若干个元素的顺序栈...
Python数据结构预算法之栈(Stack)的实现与应用 数据结构预算法.pdf
基于C语言的数据结构-栈stack
这个是用c语言实现的一个stack类数据结构的操作。对c语言堆栈更加深入的认识!
这个文件中有两种数据结构:stack和vector_stack,当然用法都一样,只不过第二个偷了点懒 第一个是用数组实现的,第二个是用vector实现的,个人觉得第一个更快 有时间会更新,只写了几个函数 想知道更多?赶紧下载...
stack.h为栈的实现,testStack.c为stack的用法
该代码主要完成数据结构中关于栈的一些操作函数,包括初始化栈,压栈,出栈等操作,本代码还对栈的具体应用给予举例,来完成进制数据之间的转换,包括将十进制数转换为二进制数和八进制数,希望对学习数据结构的同志...
栈的实现,Stack栈使用符号进出 静态栈,与链表栈的实例
用c语言编写的一个stack程序,实现了进栈,出栈,删除栈顶元素等功能。
使用C++描述,数组实现的栈。实现了栈的基本操作。包括拷贝构造函数和操作符重载。
数据结构实验用堆栈实现计算器,大二数据结构实验
stack栈,如何使用栈,如何学好栈就下载此文档,很全的,谢谢啦,数据结构与算法!!!
常用的C++数据结构算法,包括队列、堆栈、链表...等.以模板类型式实现
UDP 协议栈 IP。V1.3 - ARP timeout and ability to reset the ARP IP/MAC cache Migration notes: v1.2 to v1.3 - UDP_complete_nomac and IP_Complete_nomac have generics to specify clock rate and ARP time...
JavaScript实现栈结构(Stack) 一、前言 1.1. 什么是数据结构? 数据结构就是在计算机中,存储和组织数据的方式。 例如:图书管理,怎样摆放图书才能既能放很多书,也方便取? 主要需要考虑两个问题: 操作一:新书...
可运行C语言版本参考严蔚敏版本的数据结构与算法书,希望对正在学习的同学或者考研的同学有所帮助,我的代码都是在VC6.0上编写,编译。 #ifndef MAZE_H_ #define MAZE_H_ #include "stack.h" /** * position */ ...
以C++类的方式实现整型元素堆栈(stack)数据结构。链栈支持如下基本操作或功能:构造空栈;销毁栈;清除栈;判断栈是否为空;求栈长度;返回栈顶元素;插入栈顶元素;弹出删除栈顶元素;遍历打印栈元素。