PHP与数据结构之带头结点的栈的链式存储结构
2017-04-15 11:00
316 查看
<?php /* * use php write stack * 栈的链式存储(链栈,单链表尾部添加) * 定义一个结点node */ class node{ //存储单元 private $data; //指向下一个的“指针” private $next; //初始化node public function __construct() { $this->data=null; $this->next=null; } /** * @param null $data */ public function setData($data) { $this->data = $data; } /** * @return null */ public function getData() { return $this->data; } /** * @return null */ public function getNe 4000 xt() { return $this->next; } /** * @param null $next */ public function setNext($next) { $this->next = $next; } } class linkStack { //node 对象 private $obj; //count 记录总长度 private static $count; //top 始终指向栈顶元素 private $top; //初始化链栈 public function __construct() { //栈顶为空,空栈 $this->top=null; //计数器初始化为0 self::$count=0; //构造头结点 $this->pushLinkStack(); } //获取node结点函数 private function setNode() { return new node(); } //入栈操作 public function pushLinkStack($insert=null) { //添加node结点 $this->obj=$this->setNode(); //赋值数据 $this->obj->setData($insert); //“指针”后移 $this->obj->setNext($this->top); //重新定义“指针位置” $this->top=$this->obj; //var_dump($this->top); //计数器加一 if ($insert!=null) self::$count++; } //显示函数 public function out() { $oobj=$this->obj; while($oobj->getNext()!=null){ echo $oobj->getData()."<br>"; $oobj=$oobj->getNext(); } echo $this->top->getData(); } //栈顶弹出元素 public function popLinkStack() { //如果栈空,则echo提示 if ($this->obj->getNext()==null){ echo "栈以空"; }else{ //如果栈未空 $this->obj=$this->obj->getNext(); $this->top=$this->obj; } } } /*$a=new linkStack(); $a->pushLinkStack(1); $a->pushLinkStack(2); $a->pushLinkStack(3); $a->out(); $a->popLinkStack(); $a->out();*/
相关文章推荐
- 数据结构-java与c实现带头结点的单链表
- 用C++实现数据结构二 带头结点的单链表
- 数据结构:带头结点的双向循环链表
- 【c++版数据结构】之单链表的实现(带头结点以及尾节点)
- 《数据结构》进行曲--带头结点的单循环链表的基本操作
- 数据结构_不带头结点的链表逆制
- 每周数据结构【2】:删除带头结点的含有x的值的节点
- 2-9-扩展的线性单链表(带头结点)-线性表-第2章-《数据结构》课本源码-严蔚敏吴伟民版
- 数据结构(四)——单链表 、带头结点的单链表、循环链表 及其实现
- 数据结构模版----单链表SimpleLinkList[带头结点](C语言实现)
- 带头结点的单链表——数据结构课堂作业
- 数据结构:设有一个不带头结点的单链表L,设计两个递归算法,del(L,x)删除单链表L中第一个值为x的节点,delall(L,x)删除单链表L中的最小节点值。
- 【C++数据结构学习笔记---线性表】带头结点的双向循环链表
- 线性表的链式存储结构(带头结点的单链表)
- 【c++版数据结构】之循环双链表的实现(带头结点以及尾节点)
- 数据结构(四)——单链表 、带头结点的单链表、循环链表 及其实现
- 不带头结点的单链表——数据结构课堂作业
- 使用不带头结点的循环链表实现队列(数据结构)
- 数据结构 带头结点的单链表 操作大全 最全的链表操作(c++实现)
- 数据结构 P38 算法实现 在带头结点的单链表的第i个元素插入元素e