1樓:網友
可以用檔案流來理解。
第一次讀入的時候fp將所有檔案流貯存內容都讀入,並且認為是讀入了程式所需的全部資訊。直到用完了流中所有的值,然後如果這時候還需要資料,才再到檔案流中讀取資料。
所以結合lz的現象,lz可以仔細再f7一下,就會發現只是第二次和第三次不需要提示輸入,第四次還是提示輸入的。
因為比如輸入a 回車。
實際上流中的值為 a chr(10) chr(13)
ps:回車符有兩個字元)
-分割線---
很奇怪,lz的程式沒有結束條件。應該一開始就讀入節點個數吧,然後一開始就輸入n個字元。
readln也可以,它會自動忽略掉乙個回車符。
-分割線---
說實話我沒有看懂你的建樹建的是什麼樹。按照過程貌似是一棵二叉樹,但這樣建立的二叉樹是單鏈的, if a=0 then exit這句話是不會有用的。
如果真的要建立二叉樹的話是不能這樣建立的。至少你應該設定二叉樹的層數或者每個節點的高度。
你可以輸入乙個長度為10的串,然後 if a=0 then exit 改成 if a=11,在程式結束前把這棵樹所有節點的lch,rch,ftr依次輸出來,看看構樹的結果。
-分割線---
如果你還是對這個構樹有什麼問題,我的建議是對它不用考慮太多。構這樣的樹的題目是非常少的,特別是對於二叉樹。
你還可以參考二叉排序樹的建立。裡面的構樹過程希望對你有用。
-分割線---
樓上說的樓下現在真的變成了樓下。。
-分割線---
chr(13) =回車符 chr(10) =換行符。
為什麼乙個回車等於這兩個字元我也不知道。。
回車 = eoln ,所以可以加上一句: if eoln then readln; 這樣就忽略了chr(10) chr(13)。
read(ch)讀入的是單字元。
-分割線---
q:「直接用二叉樹的性質(子樹為2i,2i+1),建立乙個一維陣列是通用的嗎?」
a:yes。但是在實際問題中往往這樣做會浪費大量的空間。堆、線段樹這樣的完全二叉樹才能避免大規模的空間浪費。
q:「為什麼樹上大多都是介紹這種左兒子、右兒子 用記錄型別的建樹方法呢?」
a:因為二叉樹是最基本的樹,記錄型別在樹裡面用的比較多,所以講樹基本這樣引入。事實上,碰到k叉樹的時候,很多情況下不能轉化成左右孩子表示法來表示。
主要是理解樹結構,跟儲存方式的變化有什麼大的關係 =.
2樓:網友
這個一看就知道是高手。
我是菜鳥不會。
只為來拿兩分。
3樓:ice璐璐
我仔細看了,不覺得有問題。
呃 不過建議把i的處理關注下。
然後 拉到我的fp上執行了下。
沒有問題……
4樓:樸宜然
一,把read改為readln
2,你的建樹沒有終止條件。
3,如樓下所說,我也試了,第四次是要輸入的。
第乙個為字母,第二個為#13 第三個為#
pascal中樹的含義
5樓:網友
首先,我們pascal中的資料的關係有:1.一對一(線性表)2.一對多(樹)3.多對多(圖)。
其次,樹的有關術語即其意義:
1.根結點:根結點是沒有前驅結點的。除根節點以外,每個節點都必定有乙個前驅,每個結點都有n個後續結點(n≥0)
2.乙個節點的前驅結點叫做父結點。
6樓:力弘雅
一種資料結構。
最典型的是二叉樹,乙個節點有兩個或以下的分支。
PASCAL問題,Pascal問題
歷年noip。找源程式太容易了吧 pascal問題 第五題 program lsh5 vara,b,n,x,p integer t array 1.100 ofinteger begin readln n fora 1ton div2 1 dobegin x 0 p a forb a 1ton di...
pascal問題,pascal問題
這是第一題 var i,j,a,n,s,t longint begin readln a,n for i 1 to n do begin s 0 for j 0 to i 1 do begin inc s,a round exp j ln 10 end inc t,s end writeln t r...
關於Pascal的問題
語法錯誤是 program esatj 後面有 程式錯誤x 90 0.7 x 改為x 90 0.7 x 100 附加題var a,b,c real procedure max var a,b real vart real begin if aend begin read a,b,c max a,b ...