C_and_CPP 板


LINE

※ 引述《adrianshum (Alien)》之铭言: : ※ 引述《freeinmind (黑黑的天空出现绿光)》之铭言: : : 是这样的一般的印出二元树 不管是inorder 或 preorder : : 我知道要怎麽写 : : 但是我不知道要怎麽印出树状图的二元树 : : 像是 a 的二元数 : : / \ : : b c : : / \ \ : : d e f : : 希望印出来是 : : f : : c : : a : : e : : d : : 照层数排这样 请教一下 : f : c : a : e : b : d : 这样吧? : 每层自己是多少层, 不难吧? : 不就是 (psuedo code) : printTree(node, level) { : printTree(node->right, level + 1); : 印 level 个 space; : 印自己的值; : 印 new line; : printTree(node->left, level + 1); : } : 概念上就是这样而已 依照上面的概念 我的程式是现在这样 void padding ( char ch, int n ) { int i for ( i = 0; i < n; i++ ) putchar ( ch ); } void structure ( struct node *root, int level ) { int i; if ( root == NULL ) { padding ( '\t', level ); puts ( "~" ); } else { structure ( root->right, level + 1 ); padding ( '\t', level ); printf ( "%d\n", root->info ); structure ( root->left, level + 1 ); } } int main ( void ) { struct node *tree = NULL; /* ... * structure ( tree, 0 ); return 0; } 这是把node传到struture 有没有办法是把BST传到structure 像是 这是我的header ypedef struct node { void* dataPtr; struct node* left; struct node* right; } NODE; typedef struct { int count; int (*compare) (void* argu1, void* argu2); NODE* root; } BST_TREE; typedef struct nodeTag2 { char* key; char* latinName; char* genus; char* family; char* order; char* animalClass; }ANIMALS; 先创一个BST 然後把TXT档读进ANIMALS的structure 再用BST_INSERT 把ANIMALS 一个一个读进BST里 最後把BST印出来 当然是像是上面那种锯齿状的BST 有想了一个方法 用ADT来实作 void BST_Traverse (BST_TREE* tree, void (*process) (void* dataPtr),int level) { _traverse (tree->root, process,level); return; } // end BST_Traverse static void _traverse (NODE* root, void (*process) (void* dataPtr),level) { if (root){ _traverse (root->left, process,level+1); padding ( '\t', level ); process (root->dataPtr,level); _traverse (root->right, process),level+1); } return; }// _traverse void padding ( char ch, int n ) { int i for ( i = 0; i < n; i++ ) putchar ( ch ); } void process(void*ptranimal) { //local declarations ANIMALS ani = *(ANIMALS*)ptranimal; printf("%s %s %s %s %s %s", ani.key,ani.latinName,ani.genus,ani.family,ani.order,ani.animalClass); return; }//process void printTRee(BST_TREE*list) { printf("\n animal list:\n"); BST_Traverse(list,process,0); printf("end of animal list\n"); return; } 最後compile 可以过 但是有个waring: putchar is undefined 印的结果就直接当掉 囧 有人可以帮我看看吗 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 24.7.54.192
1F:→ adrianshum:.... 开个 debugger trace 一下到什麽地方当掉吧 12/03 10:55
2F:→ adrianshum:这里不是免费人肉debugger 好不好? 12/03 10:55
3F:→ freeinmind:不好意思 前面读档都没问题 就是到要印出BST就当掉 12/03 10:56
4F:推 final01:不用debugger就用printf不断测试跟想哪里指标会乱指吧 12/03 12:05
5F:→ nvidia:人肉DEBUGGER很贵 12/03 15:20
6F:推 ledia:就算你想找人肉 debugger, 也用置底的方式贴 code 12/03 23:06
7F:→ ledia:直接放在板上, 要 copy 也麻烦, 想帮你忙的机率约等於零 XD 12/03 23:07
8F:推 lairrol:不能同意楼上更多.... 12/04 01:52







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灯, 水草

请输入看板名称,例如:Gossiping站内搜寻

TOP