>第 12 章 栈与队列>堆栈

daidai0628 daidai0628@sina.com
2009-02-17 11:58:16

top总是指向栈顶元素的下一个元素,可以把它称为指针(Pointer).

建议改为:指向(非空栈)栈顶元素的下一个元素。


宋劲杉 songjinshan@gmail.com
2009-02-17 20:46:30

Sorry, this will not change. 尽管你的建议很有道理。而我也有我的道理。
第一,栈为空的情况并不是一个special case,所以我不想强调栈为空的情况。如果认为栈顶的位置是-1,那么top指向0仍然是指向栈顶下一个元素,和其它情况一样处理,不需要特殊处理。C程序员应该具有这种分析能力,尽可能减少特殊处理代码。
第二,即使我不提栈为空的情况,这里也没有歧义,一般人读到这里都应该自己思考栈为空是什么情况,即使没有思考到位,结合后面的代码例子也该理解到位了。


daidai0628 daidai0628@sina.com
2009-02-18 17:41:22

呵呵,出发点不一样。你说的有道理,我是从数据结构这个方面想的。


RobinXiang dancelinux@gmail.com
2009-03-25 12:18:27

前面已经介绍过结构体的概念,建议用结构来实现堆栈的实例,因为感觉用全局变量+数组不便于理解


宋劲杉 songjinshan@akaedu.org
2009-03-25 15:03:11

您的意思是把全局变量top和数组stack合在一个结构体里吗?感觉不是很有必要。


churchmice firefoxelectric@gmail.com
2009-05-20 17:28:04

我只是随便写一点我想到的东西,或许关系不是很大

这里可以再次强调一下递归
void print_backward(int pos)
{
     if(pos == LEN)
	  return;
     print_backward(pos+1);
     putchar(buf[pos]);
}

通过简单的交换两行代码,就可以实现顺序打印
void print_backward(int pos)
{
     if(pos == LEN)
	  return;
     putchar(buf[pos]);
     print_backward(pos+1);
}

你可以无视,我就是简单的写一下自己看到这里的心得体会


宋劲杉 songjinshan@akaedu.org
2009-05-21 11:04:03

呵呵谢谢,我觉得不是太有必要写到书里。不过这些相关的讨论会一直保留的:)


如果您有建设性意见,哪怕只是纠正一个错别字,也请不吝赐教,您留下的姓名和email将会出现在本书前言的致谢中。再次感谢您的宝贵意见!