asm/c/c++/......
posted on 2005-12-22 16:13 ngaut 阅读(1596) 评论(7) 编辑 收藏 引用 所属分类: c/c++/ds
用栈的话这样实现: void ReservePrint(List L) { assert( NULL != L ); int count = 0; int temp; while (NULL != L->Next) { ++count; temp = L->Next; __asm push temp; L = L->Next; } while(--count>=0) { __asm pop temp; printf(" %d ", temp); } } 回复 更多评论
个人觉得存在先进后出的结构时用栈实现更好理解,这里用栈来实现似乎更加好理解一些^_^,另外你的代码有点瑕疵,这里内嵌汇编不合适吧,因为不确定链表的长度,如果大于操作系统给ReservePrint分配的堆栈就会overflow了,不知是否正确^_^ 回复 更多评论
如果会overflow,你的递归方法一样会overflow,因为函数调用,都是使用堆栈来传递参数。 回复 更多评论
是啊,多谢老兄指点,不过你好像误解我的意思了(其实是我自己没有说清楚)^_^ 我的意思是:另外实现一个堆栈,比如链栈,而不是直接用该函数自己的栈,这样就不会overflow了 回复 更多评论
嗯,默认状态,堆栈大概可以push 250,000 个int,当然这个大小也是可以调整的。 我这样写,主要也是从效率上考虑,使用原始的stack,飞快哦! 回复 更多评论
很好的程序,学习了。3k 回复 更多评论
printStack(Stack s){ Object o = s.pop(); if(o == null) return; printStack(s); println(o);} 回复 更多评论
Powered by: C++博客 Copyright © ngaut