C_Sharp 板


LINE

※ 引述《happykeny (白目小子)》之銘言: : 請問要怎麼宣告tree的結構?? : 以前只用過C寫指標 對於C#不是很清楚 : 爬文過了 = =" : 哪位大大可以教一下 3Q !!! class Node { static public int m; public int ct, Jx, has,PxPos; public long[] key; public int[] child;//index oh child-node[] public Node parent; static public long HashKey(string key0) { return Int32.Parse(key0); } public Node(int j) { ct = 0; Jx = j; parent = null; PxPos = 0; key = new long[m+1]; child = new int[m+1]; } public void Init(string str) { string[] arr = str.Split(",".ToCharArray()); int j; for (j = 0; j < arr.Length; j += 2) { key[j] = long.Parse(arr[j]); child[j + 1] = Int32.Parse(arr[j + 1]); } ct = j / 2; } public override string ToString() //new { string str = ""; int j; str += "[" + child[0] + "],"; for (j = 0; j <=ct; j++) { str += key[j];//key[j].ToString() + ",";// +child[j].ToString() + ","; str += ",[" + child[j] + "],"; } return str; } public int IndexOf(long key0) { int j, cmp; has = 0; for (j = 0; j <ct; j++) { if (key0 == key[j]) { has = 1; return j; } else if (key0 < key[j+1]) break; } return j; } public int Add(long key0, int NodeJx) { ++ct; key[ct] = key0; child[ct] = NodeJx; return ct; } public int Add(Node xnode, int fg) { int j,j0=ct; for (j = 1; j <=xnode.ct; ++j) { key[j0+j-1] = xnode.key[j]; child[j0+j-1] = xnode.child[j]; } ct += xnode.ct - 1; return ct++; } public int Add(Node xnode, int j0,int j9) { int j,ct0=ct; for (j = j0; j <= j9; ++j) { key[ct0 + j] = xnode.key[j]; child[ct0 + j] = xnode.child[j]; } ct += j9-j0+1; return ct; } public int Insert(int pos,long key0, int NodeJx) { int j; string str = ""; str += "pos,ct=" + pos + "," + ct + "," + key.Length; //key[2] = 1; key[1] = 1; key[0]=1; ++ct; for (j = ct; j > pos; --j) { str += ",j=" + j; MessageBox.Show(str); key[j] = key[j - 1]; child[j] = child[j - 1]; } key[pos] = key0; child[pos] = NodeJx; return 1; } public int Delete(int pos, int fg) { int j; for (j = pos; j <ct; ++j) { key[j] = key[j + 1]; child[j] = child[j + 1]; } --ct; return 1; } public int DeleteTop(int ct0, int fg) { int j; for (j = 0; j < ct-ct0; ++j) { key[j] = key[ct0 + j]; child[j] = child[ct0+j]; } return 1; } } class BTree //m-way search tree { int m,m2,max; public int SxJx, has; Node root, SxParent,node0; Node[] node; public BTree(int m0,int max0) { m = m0; m2 = (m+1) / 2; max = max0; Node.SetM(m); node = new Node[max0]; } public void Init(int fg) { int j; for (j = 0; j < max; j++) node[j] = new Node(j); node0 = root = node[0]; } Node Free(int fg) { int j; for (j=1;j<max;j++)//index=0,cannot use if (node[j].ct == 0) { node[j].Jx = j; return node[j]; } node[j] = new Node(j); return node[j]; } public string MyLink(Node p) { int j,link; string str=""; for (j = 0; j <= p.ct; j++) { link = p.child[j]; if (link == 0) continue; Node q = node[link]; str+=q.ToString(); } return str; } public string List() { int j, link; string str = ""; StringBuilder sb = new StringBuilder(); sb.AppendLine(root.ToString()); sb.AppendLine(MyLink(root)); for (j = 0; j <= root.ct; j++) { link = root.child[j]; if (link == 0) continue; Node q = node[link]; sb.AppendLine (MyLink(q)); } return sb.ToString (); } Node Split(Node old,int fg) { int j, ct2 = m-(m2-1); Node p2 = Free(0); //p2.parent = old.parent; for (j=0;j<ct2+1;j++) { p2.key[j]=old.key[m2+j]; p2.child[j]=old.child[m2+j]; } p2.ct=m-m2; old.ct = m2-1; return p2; } public Node search(string key00, int fg) { Node p=root,q=node0; int childx; long key0 = Node.HashKey(key00); { SxJx = p.IndexOf(key0); if (p.has > 0) { has = 1; return p; } q = p; childx=p.child[SxJx]; p =node[childx]; } has = 0; return q; } public int Insert(string key00, int fg) { } public int Delete(string key0, int fg) { } --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.163.6.210
1F:推 LaPass:咦? 怎麼是是連到parent而不是連樹根? 05/04 09:41
2F:推 LaPass:說錯,怎麼是是連到parent而不是連child? 05/04 09:47
3F:→ ideaup:where? 05/04 20:26







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:WOW站內搜尋

TOP