文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>图形化打印树结构 利用ncurses库

图形化打印树结构 利用ncurses库

时间:2010-11-19  来源:biliucheng

在编写有关树的算法时,没有一个直观的查看方法来观察树的结构。因此临时写一个,作为写树的数据结构时的辅助函数。
用gcc编译时需要加上-lcurses -lm参数。效果图:
                                                               19
                               [1                                                             20 ]
                [*                             8  ]                            *                             *
                                       [7             12 ]
                                    [4     *  ]   [11    13 ]
                                   [3 5  ]  [10*  [* 14 ]
只能打印六层,再多就挤不下了。

#include <math.h>
#include <curses.h>
void print_tree(struct node * root){
        initscr() ;
        clear();
        recur_print(root, 0, COLS/2);
        move(LINES-1, COLS-1) ;
        refresh() ;
        getchar() ;
        endwin() ;
}
static void recur_print( struct node * node, int line, int col ){
        if( node == NULL ){
                move( line, col ) ;
                addstr("*");//此处为加*号的代码,用来占位,可去掉。

                return ;
        }
        int t = COLS/pow( 2, line+2 );
        char buf[9];
        sprintf(buf,"%-d", node->data ) ;
        move( line , col ) ;
        addstr( buf ) ;
        if( node->left != NULL || node->right != NULL ){
                move(line+1, col-t-1 ) ;
                addstr("[");
                move(line+1, col+t+3) ;
                addstr("]");
        }
        recur_print( node->left, line+1, col-t ) ;
        recur_print( node->right, line+1, col+t ) ;
}


排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载