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

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

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

    posts - 241,  comments - 116,  trackbacks - 0
       最近開始學(xué)習(xí)java的數(shù)據(jù)結(jié)構(gòu)(確切地說,是用java實(shí)現(xiàn)的數(shù)據(jù)結(jié)構(gòu)),首先,很大的感觸是,和C實(shí)現(xiàn)鏈表的思想是相通的啊。數(shù)據(jù)結(jié)構(gòu)本來就一樣嘛。
      
       閑話少扯,直奔主題!
       先說鏈表吧,鏈表不同于以前我們學(xué)過的隊列或數(shù)組,它是非線性的,即不是在內(nèi)存中連續(xù)存儲的。鏈表可以理解成由很多結(jié)點(diǎn)組成,很多人會把鏈表比喻為自行車 的鏈條,竊以為,這樣比喻是欠妥的,因?yàn)殒湕l是連續(xù)的(哈哈哈哈,這個牛角尖鉆的),或許可以將其理解為你手機(jī)里存的親友手機(jī)號碼,我們可以通過這個號碼 和那個人取得聯(lián)系。我們一般將鏈表的一個結(jié)點(diǎn)分成兩個部分:Data filed和Pointer field(這些是作者沿用C里的叫法),數(shù)據(jù)域用來存儲數(shù)據(jù),后面的指針域用來存放下一個結(jié)點(diǎn)的地址。
       結(jié)點(diǎn)的定義如下:
    public class Node {
    商賬追收

    // local declaration
    private Object obj;
    private Node next;

    // getters and setters
    public Object getObj() {
    return obj;
    }
    public void setObj(Object obj) {
    this.obj = obj;
    }
    public Node getNext() {
    return next;
    }
    public void setNext(Node next) {
    this.next = next;
    }

    } // end class Node
       這段代碼很清晰的表明了結(jié)點(diǎn)的組成內(nèi)容。

       我的隊列之鏈表實(shí)現(xiàn)版實(shí)現(xiàn)了以下幾個功能:創(chuàng)建、增加、刪除、插入、修改、打印、取指定位置的值以及取隊列的大小。
       先選取其中的幾個闡述一下,希望大家指正!
      1.刪除:先上代碼
    // delete an item from list
    public void del(int index){

         // counters
    淘寶女裝夏裝新款

         int count = 0;

         // delete item
         if(index < 0 || index >= size()){
            throw new RuntimeException("Out of index:" + index);
         }else{
             if(index == 0){
        root = null;
    }else{
        Node node = root.getNext();
        while(node != null){
    count ++;
    if(index == count){
        node.setNext(node.getNext().getNext());
    }
    node = node.getNext();
        } // end loop while
              } // end if-else
          } // end if-else

    } // end method del
       刪除的實(shí)現(xiàn)的一個難點(diǎn)是如何確認(rèn)到達(dá)指定的index位置進(jìn)行下一步操作。這里是首先定義了一個計數(shù)器,用以判斷是否到達(dá)指定位置,當(dāng) index==count時,就可以進(jìn)行刪除操作了,刪除就是將index-1處得結(jié)點(diǎn)的next指向index+1處的結(jié)點(diǎn),java的一個優(yōu)點(diǎn)是,你 不用像C一樣人為地用free()函數(shù)釋放空間,JVM會自動回收。個人強(qiáng)烈建議,在學(xué)數(shù)據(jù)結(jié)構(gòu)時,拿支筆在紙上畫畫,這樣可以將抽象的東西具體化,有利 于理解。向鏈表中增加一個元素就是刪除的逆過程了。此處不再贅述。

       2.插入:代碼如下
    // insert an item to list (follow item NO.index)
    public void insert(int index, Object obj){

    // counters
    int count = 0;

    if(index < 0 || index >= size()){
         throw new RuntimeException("Out of index: " + index);
    }else{
         // insert
         if(index == 0){
            root.setObj(obj);
         }else{
            // create a new node
            Node insert = new Node();
            insert.setObj(obj);

            // insert it into the list
            Node node = root.getNext();
            while(node != null){
                 count ++;
                 if(index == count){
                    insert.setNext(node.getNext());
                    node.setNext(insert);
                 }
                 node = node.getNext();
            } // end loop while
         } // end if-else

    } // end if-else

    } // end method insert
       這段代碼其實(shí)和刪除的很像,只是在判斷之間先創(chuàng)建一個insert結(jié)點(diǎn)并setObj了,而且,有一個很值得注意的地方是:必須先insert.setNext(node.getNext());否則就會出錯,大道理上是和程序時自上而下執(zhí)行是有關(guān)的。相信你懂的。
       這兩段代碼都得先比較index和size()進(jìn)行比較,這是為了保持代碼的健壯性。防止溢出。

       寫這個的時候,我就在想,我寫的東西很大一種程度上是給未來的自己看的,可以用作復(fù)習(xí),可以用來找回憶,所以,總希望以一種輕松和諧的姿態(tài)行文。

       既然寫了這么多,就繼續(xù)扯點(diǎn)其他的吧,最近才發(fā)現(xiàn),隨著時間的推移,最初那種經(jīng)常將C和Java攪在一起的局面已經(jīng)一去不復(fù)返了,現(xiàn)在開始學(xué)著用Java 解決一些以前用C解決的問題,通過這個過程,開始更加了解C和Java,二者的相似點(diǎn)和不同的地方也已經(jīng)有點(diǎn)眉目了。欣慰啊,最開始同時學(xué)習(xí)的時候,總是 有點(diǎn)擔(dān)心,但是后來轉(zhuǎn)念一想:C和Java都是計算機(jī)語言,沒有必要將其完全分開,這才堅持了下來。過程雖然有點(diǎn)痛苦,但是結(jié)果還是有點(diǎn)滿意。
       現(xiàn)在這個階段,發(fā)現(xiàn)自己的C和java還是屬于大菜階段,但是,我一直固執(zhí)地以為,只要我堅持了,就沒有辦不到的事,至少過去20年的經(jīng)驗(yàn)這樣告訴我的。編程的天才都是訓(xùn)練出來的!我是一個不相信天才的人(盡管曾經(jīng)有人這樣叫過我 )。

       最后,以我桌面上的一句話結(jié)束這次對話吧:The minute you think of giving up, think of the reason why you held on so long.
    posted on 2011-05-26 11:53 墻頭草 閱讀(225) 評論(0)  編輯  收藏

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


    網(wǎng)站導(dǎo)航:
     
    人人游戲網(wǎng) 軟件開發(fā)網(wǎng) 貨運(yùn)專家
    主站蜘蛛池模板: 日韩免费无砖专区2020狼| 华人在线精品免费观看| 色se01短视频永久免费| 香蕉蕉亚亚洲aav综合| a毛片免费全部在线播放**| 国产成人精品亚洲精品| 日韩国产欧美亚洲v片| 国产免费变态视频网址网站| 久久亚洲精品11p| 免费人成无码大片在线观看| 日韩免费高清一级毛片| 亚洲精品国产高清不卡在线| 草久免费在线观看网站| 亚洲日韩精品射精日| 你懂的在线免费观看| 亚洲国产综合专区在线电影| 91免费福利精品国产| 亚洲无吗在线视频| 国产免费观看视频| 一级毛片aaaaaa视频免费看 | 无码一区二区三区免费视频| 亚洲色成人四虎在线观看| 国产成人精品免费视频大全五级| 特级毛片免费观看视频| 国产亚洲av片在线观看16女人| 24小时免费看片| 亚洲欧美日韩国产精品一区| 亚洲黄片手机免费观看| 一区二区三区福利视频免费观看| 亚洲精品123区在线观看| 免费在线观看你懂的| 七色永久性tv网站免费看| 亚洲久悠悠色悠在线播放| 亚洲高清成人一区二区三区| 免费观看91视频| 中文日韩亚洲欧美制服| 亚洲日本va在线视频观看| 色片在线免费观看| 人妻巨大乳hd免费看| 亚洲成a人片在线观看中文app| 吃奶摸下高潮60分钟免费视频|