<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 : 遞歸

    一個簡單的遞歸程序,它讀取給定目錄下所有文件,然后以樹型的方式在屏幕上打印出來.昨天斷斷續(xù)續(xù)得花了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個類,一個負責讀.一個負責寫.
    輸出結(jié)果:

    +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


    這是算法系列的第一篇,下一個準備寫動態(tài)規(guī)劃的.

    posted on 2006-04-23 05:00 where the amazing happens 閱讀(899) 評論(1)  編輯  收藏 所屬分類: 算法&數(shù)據(jù)結(jié)構(gòu)

    評論

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

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


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


    網(wǎng)站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     

    公告

    點擊這里給我發(fā)消息

    導航

    <2008年1月>
    303112345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    統(tǒng)計

    常用鏈接

    留言簿(3)

    隨筆分類(18)

    隨筆檔案(17)

    文章分類

    相冊

    其他我的blog

    技術(shù)Blog

    最新隨筆

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲精品蜜夜内射| 大地资源二在线观看免费高清 | jzzijzzij在线观看亚洲熟妇| 亚洲精品成人片在线播放| 情侣视频精品免费的国产| 久久www免费人成看片| a国产成人免费视频| 男女猛烈无遮掩视频免费软件| 久久精品国产亚洲av麻豆蜜芽 | 五月天国产成人AV免费观看| 亚洲色成人四虎在线观看| 亚洲国色天香视频| 亚洲激情视频在线观看| 亚洲国产另类久久久精品黑人| 一区二区三区亚洲视频| 立即播放免费毛片一级| 黄瓜视频影院在线观看免费| 亚洲产国偷V产偷V自拍色戒 | 每天更新的免费av片在线观看| 中国一级特黄高清免费的大片中国一级黄色片 | 亚洲AV日韩精品久久久久| 久久久久亚洲av毛片大| 亚洲黄片毛片在线观看| 免费jjzz在在线播放国产| 在线观看免费精品国产| 日韩一级视频免费观看| 好吊妞在线新免费视频| 日本人的色道www免费一区| 女人被弄到高潮的免费视频 | 亚洲熟妇AV乱码在线观看| 一本色道久久88亚洲精品综合| 国产成人亚洲合集青青草原精品 | 四虎永久在线观看免费网站网址 | 亚洲va成无码人在线观看| 中文文字幕文字幕亚洲色| 亚洲www77777| 亚洲av无码无线在线观看 | 亚洲综合精品网站| 最新国产AV无码专区亚洲| 亚洲国产另类久久久精品小说 | 国产A∨免费精品视频|