ngaut
asm/c/c++/......
常用鏈接
我的隨筆
我的評(píng)論
我參與的隨筆
留言簿
(31)
給我留言
查看公開留言
查看私人留言
隨筆分類
(128)
.net winform(1)
(rss)
asio(8)
(rss)
c/c++/ds(47)
(rss)
calculus
(rss)
Compilers:Principles,Techniques,and Tools (21)
(rss)
os study(1)
(rss)
others(50)
(rss)
隨筆檔案
(169)
2011年5月 (2)
2011年1月 (1)
2010年11月 (1)
2010年9月 (4)
2010年8月 (1)
2010年7月 (1)
2010年6月 (1)
2010年5月 (2)
2010年4月 (3)
2010年3月 (2)
2010年2月 (4)
2010年1月 (1)
2009年12月 (2)
2009年11月 (1)
2009年10月 (2)
2009年9月 (3)
2009年8月 (4)
2009年5月 (1)
2009年4月 (1)
2009年2月 (2)
2008年12月 (2)
2008年10月 (4)
2008年9月 (2)
2008年8月 (3)
2008年7月 (4)
2008年6月 (2)
2008年5月 (1)
2008年4月 (4)
2008年3月 (9)
2008年2月 (5)
2008年1月 (2)
2007年12月 (6)
2007年11月 (3)
2007年10月 (2)
2007年8月 (1)
2007年7月 (1)
2007年6月 (3)
2007年5月 (1)
2007年4月 (9)
2007年3月 (1)
2007年2月 (11)
2007年1月 (1)
2006年12月 (3)
2006年11月 (4)
2006年10月 (3)
2006年9月 (6)
2006年8月 (4)
2006年7月 (10)
2006年6月 (3)
2006年5月 (5)
2006年4月 (2)
2006年3月 (1)
2006年1月 (2)
2005年12月 (10)
文章分類
NetWork
(rss)
文章檔案
(3)
2008年10月 (2)
2008年4月 (1)
others
.net 設(shè)計(jì)模式牛人
da hua xi you
hzbairly的專欄
先瞄準(zhǔn)目標(biāo)市場(chǎng)再研發(fā)產(chǎn)品
linux內(nèi)核
linux內(nèi)核
linux牛人,調(diào)侃風(fēng)格
經(jīng)典
os 教程
os開發(fā)教程
Winter實(shí)驗(yàn)室
某牛
用MSVC開發(fā)os
用MSVC開發(fā)os
something special
http://vm-kernel.org/blog/
vm and kernel
joshua_yu
網(wǎng)絡(luò)牛人
垃圾堆
安全高手
經(jīng)典的c/c++
absurd的專欄
C++ 有價(jià)值blog索引(不斷更新)
C++ 有價(jià)值blog索引
cppblog的猛男
cppblog的猛男
cppreference
c/c++ standard library reference
crazy-bit
不論你在什么時(shí)候開始,重要的是開始之后就不要停止。 不論你在什么時(shí)候結(jié)束,重要的是結(jié)束之后就不要悔恨
guanwl的專欄
c++仿基因編程
junguo的專欄
設(shè)計(jì)模式
leotangcw的專欄
some resource aboutwinpcap
linux大牛
linux大牛,也精通windows的說
ralph623的專欄(c++高人)
c++高人
寒星軒
c++高手
熊春雷的專欄
c/c++/flex/bison
一雨田的專欄
設(shè)計(jì)模式和網(wǎng)絡(luò)編程
又一個(gè)內(nèi)核的大牛
搜索
積分與排名
積分 - 397800
排名 - 60
最新評(píng)論
1.?re: 當(dāng)asio::async_read與socket的async_read_some的區(qū)別
多個(gè)客戶端同時(shí)發(fā)送數(shù)據(jù),m_packet不會(huì)出問題?這個(gè)讀取是多線程的還是單線程的呢?
--xgg
2.?re: 當(dāng)asio::async_read與socket的async_read_some的區(qū)別
謝謝大哥的博客,看了你的這篇文章的時(shí)間,很是崇拜您
--楊立平
3.?re: 二叉樹的遍歷:前序,中序輸出有點(diǎn)問題,但是不知道到怎么修改,想請(qǐng)教各位大神
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--呆呆笨笨的孩紙
4.?re: 二叉樹的遍歷:前序,中序,后序,層序--包括遞歸和非遞歸實(shí)現(xiàn)
我自己寫的
http://lk1ngaa7.cf/?p=318
--lking
5.?re: 解決unresolved external symbol "public: int __thiscall CWnd::KillTimer(unsigned int)" (?KillTimer@CWnd@@QAEHI@Z)問題
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--lebesgue06
閱讀排行榜
1.?二叉樹的遍歷:前序,中序,后序,層序--包括遞歸和非遞歸實(shí)現(xiàn)(91584)
2.?解決error C2011: 'fd_set' : 'struct' type redefinition問題(16466)
3.?介紹一款國(guó)產(chǎn)開源C編譯器(14479)
4.?解決unresolved external symbol "public: int __thiscall CWnd::KillTimer(unsigned int)" (?KillTimer@CWnd@@QAEHI@Z)問題(13308)
5.?Database disk image is malformed 解決辦法(11028)
評(píng)論排行榜
1.?二叉樹的遍歷:前序,中序,后序,層序--包括遞歸和非遞歸實(shí)現(xiàn)(21)
2.?《自己動(dòng)手寫嵌入式操作系統(tǒng)》源代碼(14)
3.?看了兩天boost::asio網(wǎng)絡(luò)庫相關(guān)的資料,寫了個(gè)小程序用異步tcp方式來傳文件,果然高效,速度穩(wěn)定在10M/s左右(13)
4.?前段時(shí)間做的部分筆試題和答案(提醒自己)(9)
5.?最近寫了個(gè)小工具,自動(dòng)往代碼里面加入垃圾代碼(9)
Powered by:
博客園
模板提供:
滬江博客
|
首頁
|
發(fā)新隨筆
|
發(fā)新文章
|
聯(lián)系
| |
管理
數(shù)據(jù)結(jié)構(gòu)筆記:遞歸實(shí)現(xiàn)鏈表的逆序輸出
/**/
/*
*******************************************************************
created: 2005/12/22
created: 22:12:2005 14:06
filename: ReservePrint.c
author: Liu Qi
purpose: 鏈表的逆序輸出
********************************************************************
*/
#include
<
stdio.h
>
#include
<
assert.h
>
#include
<
time.h
>
#include
"
../sllist.h
"
#define
MAX_NUM 10
/**/
/*
===========================================================================
** Function name: GetRandList
** Parameter: void
** Precondition: void
** Description: 構(gòu)造一個(gè)由隨機(jī)數(shù)組成的鏈表
** Return value: 鏈表的頭節(jié)點(diǎn)指針
** Author: Liu Qi, 2005/12/18
===========================================================================
*/
List GetRandList(
void
)
{
int
i;
List L
=
SLL_Create();
srand( (unsigned)time( NULL ) );
for
( i
=
0
; i
<
MAX_NUM; i
++
)
{
SLL_PushFront(rand()
%
20
, L);
}
return
L;
}
/**/
/*
===========================================================================
* Function name: ReservePrint
* Parameter: L: 鏈表頭指針
* Precondition: NULL != L
* Description: 遞歸實(shí)現(xiàn)鏈表的逆序輸出
* Return value: void
* Author: Liu Qi, [12/22/2005]
===========================================================================
*/
void
ReservePrint(List L)
{
assert( NULL
!=
L );
if
(NULL
!=
L
->
Next)
{
ReservePrint(L
->
Next);
}
else
{
//
遞歸出口,一般把遞歸出口寫作前面^_^
}
printf(
"
%d
"
, L
->
Element);
}
int
main(
int
argc,
char
*
argv[])
{
List L
=
GetRandList();
SLL_PrintList(L);
printf(
"
\n
"
);
ReservePrint(L
->
Next);
printf(
"
\n
"
);
SLL_DeleteList(L);
return
0
;
}
遞歸是個(gè)好東西啊,搞明白了覺得邏輯很清晰,結(jié)構(gòu)也很好,就是效率不高^_^,用棧來模擬遞歸看起來就不好懂了。
發(fā)表于 2005-12-22 16:13
ngaut
閱讀(3260)
評(píng)論(7)
編輯
收藏
引用
所屬分類:
c/c++/ds
評(píng)論
#
re: 數(shù)據(jù)結(jié)構(gòu)筆記:遞歸實(shí)現(xiàn)鏈表的逆序輸出
回復(fù)
更多評(píng)論
用棧的話這樣實(shí)現(xiàn):
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);
}
}
小明
評(píng)論于 2005-12-22 17:07
#
re: 數(shù)據(jù)結(jié)構(gòu)筆記:遞歸實(shí)現(xiàn)鏈表的逆序輸出
回復(fù)
更多評(píng)論
個(gè)人覺得存在先進(jìn)后出的結(jié)構(gòu)時(shí)用棧實(shí)現(xiàn)更好理解,這里用棧來實(shí)現(xiàn)似乎更加好理解一些^_^,另外你的代碼有點(diǎn)瑕疵,這里內(nèi)嵌匯編不合適吧,因?yàn)椴淮_定鏈表的長(zhǎng)度,如果大于操作系統(tǒng)給ReservePrint分配的堆棧就會(huì)overflow了,不知是否正確^_^
ngaut
評(píng)論于 2005-12-22 19:14
#
re: 數(shù)據(jù)結(jié)構(gòu)筆記:遞歸實(shí)現(xiàn)鏈表的逆序輸出
回復(fù)
更多評(píng)論
如果會(huì)overflow,你的遞歸方法一樣會(huì)overflow,因?yàn)楹瘮?shù)調(diào)用,都是使用堆棧來傳遞參數(shù)。
小明
評(píng)論于 2005-12-22 19:57
#
re: 數(shù)據(jù)結(jié)構(gòu)筆記:遞歸實(shí)現(xiàn)鏈表的逆序輸出
回復(fù)
更多評(píng)論
是啊,多謝老兄指點(diǎn),不過你好像誤解我的意思了(其實(shí)是我自己沒有說清楚)^_^
我的意思是:另外實(shí)現(xiàn)一個(gè)堆棧,比如鏈棧,而不是直接用該函數(shù)自己的棧,這樣就不會(huì)overflow了
ngaut
評(píng)論于 2005-12-22 20:28
#
re: 數(shù)據(jù)結(jié)構(gòu)筆記:遞歸實(shí)現(xiàn)鏈表的逆序輸出
回復(fù)
更多評(píng)論
嗯,默認(rèn)狀態(tài),堆棧大概可以push 250,000 個(gè)int,當(dāng)然這個(gè)大小也是可以調(diào)整的。
我這樣寫,主要也是從效率上考慮,使用原始的stack,飛快哦!
小明
評(píng)論于 2005-12-22 20:49
#
re: 數(shù)據(jù)結(jié)構(gòu)筆記:遞歸實(shí)現(xiàn)鏈表的逆序輸出
回復(fù)
更多評(píng)論
很好的程序,學(xué)習(xí)了。3k
song
評(píng)論于 2008-03-26 09:33
#
re: 數(shù)據(jù)結(jié)構(gòu)筆記:遞歸實(shí)現(xiàn)鏈表的逆序輸出
回復(fù)
更多評(píng)論
printStack(Stack s){
Object o = s.pop();
if(o == null)
return;
printStack(s);
println(o);
}
haha
評(píng)論于 2008-07-31 12:48
刷新評(píng)論列表
只有注冊(cè)用戶
登錄
后才能發(fā)表評(píng)論。
【推薦】100%開源!大型工業(yè)跨平臺(tái)軟件C++源碼提供,建模,組態(tài)!
相關(guān)文章:
ndis筆記--ReceiveHandler如何處理不完整的包
[轉(zhuǎn)]Google C++ Testing Framework Primer
[轉(zhuǎn)]Visual C++開發(fā)工具與調(diào)試技巧整理
[轉(zhuǎn)]Add color to your std::cout
[轉(zhuǎn)]Huffman編碼STL版--來自fxsjy的專欄
一個(gè)簡(jiǎn)單的遞歸下降分析表達(dá)式的例子
編譯boost庫-用vc2005編譯boost1.34.1
如何解決"找不到MSVCR80.dll "的問題
boost asio發(fā)送0字節(jié)的數(shù)據(jù)時(shí),接收端提示"找不到指定文件"
release版本的程序提示需要MFC42D.dll的原因
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
99久久做夜夜爱天天做精品
|
日韩欧美亚洲综合久久
|
久久精品国产99久久香蕉
|
97久久超碰国产精品2021
|
久久这里的只有是精品23
|
久久受www免费人成_看片中文
|
欧美精品一区二区久久
|
久久精品欧美日韩精品
|
精品久久久久久国产三级
|
国产精品狼人久久久久影院
|
人人狠狠综合久久亚洲
|
嫩草伊人久久精品少妇AV
|
精品久久久久久无码人妻热
|
一本久久a久久精品综合香蕉
|
欧美牲交A欧牲交aⅴ久久
|
www.久久热
|
亚州日韩精品专区久久久
|
成人妇女免费播放久久久
|
久久青青草原精品国产
|
狠狠精品干练久久久无码中文字幕
|
区亚洲欧美一级久久精品亚洲精品成人网久久久久
|
伊人久久无码精品中文字幕
|
91久久婷婷国产综合精品青草
|
青青草原综合久久大伊人导航
|
精产国品久久一二三产区区别
|
日韩精品国产自在久久现线拍
|
无码8090精品久久一区
|
国产精品欧美久久久久无广告
|
欧美激情精品久久久久久久
|
99久久国产热无码精品免费久久久久
|
亚洲av日韩精品久久久久久a
|
久久影视国产亚洲
|
久久国产精品偷99
|
久久se精品一区精品二区国产
|
久久不见久久见免费视频7
|
国产69精品久久久久9999APGF
|
欧美成人免费观看久久
|
久久亚洲AV无码精品色午夜
|
国产精品久久久久久五月尺
|
久久综合久久综合亚洲
|
久久天天躁狠狠躁夜夜2020一
|