close
看程式解釋前必需知道的幾點…
第一點:俺寫的不一定正確。
第二點:俺沒時間寫程式了,只有寫填空,將就點吧。
第三點:以下是跟某人在MSN上的對話,做些修改,並把對方說的話刪掉就變成這樣,換句話說,俺是偷懶,哈哈哈。
orignal是原本輸入的東西
normalized是正規化
union是連集
intersect是交集
所以說 orignal rt1=(15,20)-(50,40) 這邊是題目給的東西
接下來 要把他正規化 也就是要找出(Xmin,Ymin)-(Xmax,Ymax)
以rt2為例:
orignal rt2=(5,105)-(65,10)
所以
normalized rt2=(5,10)-(65,105)
接下來是union這個應該是指外面那圈矩形 也就是交集(嗄 這邊我一直搞不懂 反正他是大矩形就對了=_=)
也是要從左下的點寫起 也就是要找出題目給的兩個矩形中的(Xmin,Ymin)-(Xmax,Ymax)
所以要把rt1跟rt2的第一個點拿來做比較 找出最小的 把第二個點比較找出最大的
所以union rect=(5,10)-(65,105)
接下來是交集 intersect 這個就是看老師的圖 找點比較快=_=|||
---------------以上是第一題-----------------
第二題 還在研究中
三跟四是老師會抽題 還不知道他抽哪題
第五題的話...第一行寫了
node=[4232f8] ,sizeof(NODE)=Ox10
這行是指
node的起始位置是[4232f8]
然後一個NODE有10單位(16進位)
(我發現呀...Ox10"應該"是ox也就是16進位的表示法,"應該"是這樣吧?)
也就是說 下一個node的起始位置是...[423208]
(因為一次要加一個node也就是10單位)
然後請看左上角 有一個地方是...
typedef struct _node NODE;
NODE node[]={
{'+',1,node+1,node+2}, //node 0
...
...
};
後面那個//node 0 是註解 提示我們這行存在node[0]
所以回到右下角 第一行寫的起始位置代表的就是 node[0]的起始位置(同時也是node這堆東西的起始位置 因為他是第一個嘛囧)...
node[0]裡面存的是+ 所以後面跟著的就是 [+,1,423308,______ ]
那個423308要對照左上角的node+1 423308(node[1])+10 => 423318
那個A是node 5 所以會變成...node[0]+50 或是node[4]+10
回到左上角
struce _node{
int value;
int flag;
struct _node* left;
struct _node* right;
};
這邊是詳細說明剛剛那個
{'+',1,node+1,node+2}
到底在寫些什麼
value是他的值 就是運算子阿 abc那些
flag我也不知道 無視他存在吧!
接下來是比較重要的 這是二分法的樹 所以他分為左右兩邊
那個node+1是左邊 node+2是右邊
用表格來表示的話會變成…
value flag left right
{ '+' 1 node+1 node+2 }
{ '*' 1 node+3 node+4 }
...
...
接下來,從node0開始畫樹...
'+'的左邊是node+1也就是noed[1]所以是*
'+'的右邊是node+2也就是noed[2]所以是/
'*'的左邊是node+3也就是noed[3]所以是-
'*'的左邊是node+4也就是noed[4]所以是%
...
...
畫完會變這樣

完成這帳圖後,就可以寫前置後置中置了。(ps:完成這張圖是比較好寫,如果可以憑空想像,就不用管這張莫明其妙的圖了。)
---------------以上是第五題-----------------
全站熱搜