php打印从1到1000,输入一个链表的头节点,从尾到头打印每个节点的值,利用PHP如何实现?...

以下是我的实现代码(我只是打印出了每个节点):

/**

* Question:输入一个链表的头节点,反向打印链表节点

* Author:entner

* time: 2017-7-21

* version:1.0

*/

/**

*Thinking:

* 遍历链表节点,将访问到的节点压入栈中,然后输出栈元素

*Ready:

* (节点类 链表游标 随机数)-> 创建一个链表

*

*/

/**

*TODO:创建节点类

*@param $nodeName string 节点名称

*@param $next object 下一节点

*/

Class Node{

public $nodeName;

public $next;

public function __construct($nodename = null,$next = null){

$this->nodeName = $nodename;

$this->next = $next;

}

}

Class SingeLinkList{

public $header;

public $stack = [];

public $top = -1;

public $newNode;

function createNode($n){

/* 声明一个头节点 */

$this->header = new Node(null,null);

$head = $this->header;

for($i=0;$i

/* 创建新的节点 */

$this->newNode = new Node(rand(0,100),null);

$current = $this->newNode;

/* 将新节点压入栈中 */

$this->top++;

$this->stack[$this->top] = $current; //这里没有做栈的限制

/* 节点名称赋值 */

$head->nodeName = $current->nodeName;

/* 当前节点为新节点 */

$head->next = $current;

/* 将当前节点设置为新的尾节点 */

$head = $current;

}

$head->next = null;

if($head->next == null){

while($this->top != -1){

print_r($this->stack[$this->top]);

$this->top--;

}

}

}

}

echo "

";

(new SingeLinkList)->createNode(4);

打印结果如下:

Node Object

(

[nodeName] => 15

[next] =>

)

Node Object

(

[nodeName] => 15

[next] => Node Object

(

[nodeName] => 15

[next] =>

)

)

Node Object

(

[nodeName] => 10

[next] => Node Object

(

[nodeName] => 15

[next] => Node Object

(

[nodeName] => 15

[next] =>

)

)

)

Node Object

(

[nodeName] => 93

[next] => Node Object

(

[nodeName] => 10

[next] => Node Object

(

[nodeName] => 15

[next] => Node Object

(

[nodeName] => 15

[next] =>

)

)

)

)

应该说,我只需要第四个结果就够了,为什么会出现递归的现象,我没有利用递归,而且我也不知道这样是不是对的,求指点。

P.S 这个题目和反转链表有什么区别?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值