<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    where the amazing happens

    算法1 : 遞歸

    一個簡單的遞歸程序,它讀取給定目錄下所有文件,然后以樹型的方式在屏幕上打印出來.昨天斷斷續續得花了1個多小時寫出來

    讀取文件

    package ?test;
    import ?java.io. * ;
    import ?java.util. * ;

    /**
    ?*???Put?files?into?a?tree
    ?*?
    */

    public ? class ?ReadFilesAndBuiltTree? {
    ????
    ????
    static ? class ?Node {
    ????????
    private ?Node?father;
    ????????
    private ?List?children;
    ????????
    private ?File?data;
    ????????
    public ?Node() {
    ????????????children?
    = ? new ?Vector();
    ????????}

    ????????
    public ?File?getData()? {
    ????????????
    return ?data;
    ????????}

    ????????
    public ? void ?addChild(Node?c) {
    ????????????
    this .getChildren().add(c);
    ????????}

    ????????
    public ? void ?setData(File?data)? {
    ????????????
    this .data? = ?data;
    ????????}

    ????????
    public ?List?getChildren()? {
    ????????????
    return ?children;
    ????????}

    ????????
    public ? void ?setChildren(List?children)? {
    ????????????
    this .children? = ?children;
    ????????}

    ????????
    public ?Node?getFather()? {
    ????????????
    return ?father;
    ????????}

    ????????
    public ? void ?setFather(Node?father)? {
    ????????????
    this .father? = ?father;
    ????????}

    ????????
    public ? boolean ?hasChildren() {
    ????????????
    return ?children.size() > 0 ;
    ????????}

    ????????
    public ?Node?getChile( int ?index) {
    ????????????
    return ?(Node)children.get(index);
    ????????}

    ????????
    public ?Node?getChild(String?fname) {
    ????????????Iterator?i?
    = ?getChildren().iterator();
    ????????????
    while (i.hasNext()) {
    ????????????????Node?bn?
    = ?(Node)i.next();
    ????????????????String?n?
    = ?
    ????????????????????bn.getData().getName();
    ????????????????
    if (n.equals(fname)) return ?bn;
    ????????????}

    ????????????
    return ? null ;
    ????????}

    ????????
    public ?List?getDirChildren() {
    ????????????List?c?
    = ? new ?Vector();
    ????????????
    for ( int ?i? = ? 0 ?;?i? < children.size();i ++ ) {
    ????????????????Node?n?
    = ?(Node)children.get(i);
    ????????????????
    if (
    ??????????????????n.getData().isDirectory()????????
    ????????????????)c.add(n);
    ????????????}

    ????????????
    return ?c;
    ????????}

    ????????
    public ?List?getFileChildren() {
    ????????????List?c?
    = ? new ?Vector();
    ????????????
    for ( int ?i? = ? 0 ?;?i? < children.size();i ++ ) {
    ????????????????Node?n?
    = ?(Node)children.get(i);
    ????????????????
    if (
    ??????????????????
    ! n.getData().isDirectory()????????
    ????????????????)c.add(n);
    ????????????}

    ????????????
    return ?c;
    ????????}

    ????}

    ????
    ????
    private ?ReadFilesAndBuiltTree() {}
    ????
    ????
    public ? static ?Node?getTree(File?rootDir) {
    ????????Node?r?
    = ? new ?Node();
    ????????r.setData(rootDir);
    ????????
    return ? new ?ReadFilesAndBuiltTree().builtTree(r);
    ????}

    ????
    ????
    private ?Node?builtTree(Node?root) {
    ????????
    if ( ! root.getData().isDirectory()) return ?root;
    ????????File?f?
    = ?root.getData();
    ????????File[]?fs?
    = ?f.listFiles();
    ????????
    for ( int ?i? = ? 0 ?;?i? < ?fs.length?;?i ++ ?) {
    ????????????File?ff?
    = ?fs[i];
    ????????????Node?n?
    = ? new ?Node();
    ????????????n.setData(ff);
    ????????????n.setFather(root);
    ????????????root.addChild(builtTree(n));
    ????????}

    ????????
    return ?root;
    ????}

    ????
    ????
    public ? static ? void ?main(String[]?args) throws ?Exception {
    ????????Node?root?
    = ?getTree( new ?File(ShowFileDir.ROOT_DIR));
    ????????Node?cn?
    = ?root.getChild( " maps " );
    ????????System.out.println(cn.getChildren().size());
    ????}

    ????
    }


    輸出文件
    package?test;
    import?java.io.File;
    import?java.util.Iterator;
    import?java.util.List;

    import?test.ReadFilesAndBuiltTree.Node;

    /**
    ?*??Print?the?tree?to?screen
    ?*?
    */

    public?class?ShowFileDir?{
    ????
    ????
    public?static?String?ROOT_DIR?=?"E:/y音樂";
    ????
    ????
    public?ShowFileDir(){
    ????}

    ????
    ????
    public?void?printNodes(){
    ???????Node?root?
    =?ReadFilesAndBuiltTree.getTree(new?File(ROOT_DIR));
    ???????printNode(root,
    0);
    ????}

    ????
    ????
    private?void?printNode(Node?root,int?depth){
    ????????
    if(!root.hasChildren())return;
    ????????pd(root.getData().getName(),depth);
    ????????pindent(
    ++depth);
    ????????List?l?
    =?root.getFileChildren();
    ????????pc(l,depth);
    ????????l?
    =?root.getDirChildren();
    ????????
    for(int?i?=?0?;?i?<?l.size()?;?i++){
    ????????????Node?c?
    =?(Node)l.get(i);
    ????????????printNode(c,depth);
    ????????}

    ????}

    ????
    //?Screen?methods????
    ????private?void?pc(List?l,int?count){
    ????????Iterator?i?
    =?l.iterator();
    ????????
    while(i.hasNext()){
    ????????????Node?n?
    =?(Node)i.next();
    ????????????pp(count);
    ????????????p(
    "+"+n.getData().getName()+"\n");
    ????????}

    ????}

    ????
    ????
    private?void?pd(String?t,int?depth){
    ????????String?spc?
    =?"";
    ????????
    for(int?i?=?0;?i<?depth;?i++)spc+="-";
    ????????p(spc
    +"+"+t+"\n");
    ????}

    ????
    ????
    private?void?pindent(int?depth){
    ????????String?spc?
    =?"";
    ????????
    for(int?i?=?0;?i<?depth;?i++)spc+="?";
    ????????System.out.println(spc
    +"|");
    ????}

    ????
    ????
    private?void?pp(int?count){
    ????????
    for(int?i?=?0?;?i?<?count?;?i++)p("?");
    ????}

    ????
    ????
    private?void?p(String?s){System.out.print(s);}
    ????
    ????
    public?static?void?main(String[]?args)throws?Exception{
    ????????ShowFileDir?sfd?
    =?new?ShowFileDir();
    ????????sfd.printNodes();
    ????}

    }



    2個類,一個負責讀.一個負責寫.
    輸出結果:

    +y音樂
    ?|
    -+歐美
    ? |
    ? +WeAreTheWorld.txt
    ? +WeAreTheWorld.wmv
    ? +WhereAreYou!.txt
    ? +jeanny_3.mp3
    ? +blood-upon-the-risers.mp3
    ? +Broken Down Angel.txt
    ? +Love Hurts.txt
    ? +Broken Down Angle.mp3
    ? +Love Hurts.mp3
    ? +Celien Dion - God Bless America.mp3
    ? +SS閃電部隊在前進.mp3
    ? +The_Sun_Is_Burning_Simon_and_Garfunkel.mp3
    ? +vitas.-.opera02.rm
    ? +chivas we could be together.wma
    ? +綠色椅子.mp3
    ? +come away with me-norah jones.wma
    ? +the sound of silence.mp3
    --+live from new york city,1967-simon&garfunkel
    ?? |
    ?? +a church is burning.mp3
    ?? +a hazy shade of winter.mp3
    ?? +a most peculiar.mp3
    ?? +a poem on the underground wall.mp3
    ?? +anji.mp3
    ?? +benedictus.mp3
    ?? +blessed.mp3
    ?? +for emily,whenever I may find her.mp3
    ?? +he was my brother.mp3
    ?? +howeward bound.mp3
    ?? +I am a rock.mp3
    ?? +leaves that are green.mp3
    ?? +richard cory.mp3
    ?? +sparrow.mp3
    ?? +the 59th street bridge song.mp3
    ?? +the dangling conversation.mp3
    ?? +the sound of silence.mp3
    ?? +wednesday morning,3A.M.mp3
    ?? +you don't know where your interest lies.mp3
    -+其他
    ? |
    ? +StarCraft - Techno Mix.mp3
    ? +牽手.mp3
    ? +螢火蟲 .mp3
    ? +njsw.mp3
    ? +zeldaN64.rar


    這是算法系列的第一篇,下一個準備寫動態規劃的.

    posted on 2006-04-23 05:00 where the amazing happens 閱讀(901) 評論(1)  編輯  收藏 所屬分類: 算法&數據結構

    評論

    # re: 算法1 : 遞歸[未登錄] 2008-01-20 13:10 無名

    private ReadFilesAndBuiltTree() {}
    你這里為什么要用private來定義構造函數呢  回復  更多評論   


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    公告

    點擊這里給我發消息

    導航

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    統計

    常用鏈接

    留言簿(3)

    隨筆分類(18)

    隨筆檔案(17)

    文章分類

    相冊

    其他我的blog

    技術Blog

    最新隨筆

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 7m凹凸精品分类大全免费| 久久香蕉国产线看观看亚洲片| 免费萌白酱国产一区二区三区 | 日韩在线视频播放免费视频完整版| 亚洲宅男永久在线| 亚洲一区日韩高清中文字幕亚洲| 久久不见久久见中文字幕免费| 嫩草影院在线播放www免费观看| 国产偷国产偷亚洲高清人| 亚洲欧洲日产v特级毛片| 精品亚洲综合久久中文字幕| 免费一级毛片在播放视频| 在线免费观看一区二区三区| 免费国产成人高清在线观看网站 | 狠狠色婷婷狠狠狠亚洲综合| 免费视频淫片aa毛片| 人与禽交免费网站视频| 免费的全黄一级录像带| 成全视成人免费观看在线看| 西西人体大胆免费视频| 成人亚洲国产精品久久| 亚洲国产AV一区二区三区四区| 亚洲人成77777在线观看网| 亚洲精品在线播放视频| 一区二区三区亚洲| 婷婷亚洲久悠悠色悠在线播放| 国产AV无码专区亚洲AV男同 | 精品免费tv久久久久久久| 成人免费av一区二区三区| 久久精品无码免费不卡| 国产福利免费视频| 岛国岛国免费V片在线观看 | 国产亚洲精品影视在线产品| 亚洲国产人成中文幕一级二级| 免费人妻av无码专区| 亚洲一级特黄大片无码毛片| 亚洲精品第一国产综合境外资源| 亚洲国产成人精品女人久久久 | 国产人成亚洲第一网站在线播放| 91丁香亚洲综合社区| 亚洲区精品久久一区二区三区|