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

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

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

    Flyingis

    Talking and thinking freely !
    Flying in the world of GIS !
    隨筆 - 156, 文章 - 16, 評(píng)論 - 589, 引用 - 0
    數(shù)據(jù)加載中……

    數(shù)據(jù)結(jié)構(gòu)中避免數(shù)據(jù)項(xiàng)的重復(fù)

    抽象數(shù)據(jù)類(lèi)型(ADT)是一種只能通過(guò)接口訪(fǎng)問(wèn)的數(shù)據(jù)類(lèi)型,它是字段與基于字段的操作所構(gòu)成的集合。這里的接口不是interface,而是訪(fǎng)問(wèn)數(shù)據(jù)的途徑,接口把數(shù)據(jù)的表示和操作方法的實(shí)現(xiàn)完全分離開(kāi)來(lái)。兩種最基本的ADT是堆棧和隊(duì)列,并且根據(jù)我們的需要,可以構(gòu)建更為復(fù)雜的ADT,例如可以對(duì)數(shù)據(jù)項(xiàng)進(jìn)行計(jì)數(shù),檢查數(shù)據(jù)項(xiàng)是否存在重復(fù)等等。

    在很多實(shí)際應(yīng)用中,我們都不允許存在數(shù)據(jù)項(xiàng)重復(fù)的情況,需要對(duì)用戶(hù)提交的重復(fù)數(shù)據(jù)進(jìn)行合適的處理。讓用戶(hù)保證不提交重復(fù)的數(shù)據(jù)可以避免這種情況的發(fā)生,但顯然這種方法并不實(shí)際,既然使用ADT就是為了給使用它的程序員提供簡(jiǎn)單明了的數(shù)據(jù)類(lèi)型解決方案,那么我們就應(yīng)該在ADT中來(lái)解決這個(gè)問(wèn)題。以隊(duì)列為例,一般可以通過(guò)兩種策略來(lái)處理這個(gè)問(wèn)題:

    1.        放棄新輸入的數(shù)據(jù)項(xiàng):當(dāng)最新放入隊(duì)列中的數(shù)據(jù)項(xiàng)已經(jīng)在隊(duì)列中時(shí),放棄當(dāng)前輸入的數(shù)據(jù)項(xiàng)。

    2.        放棄舊的數(shù)據(jù)項(xiàng),保存新輸入的數(shù)據(jù)項(xiàng):當(dāng)最新放入隊(duì)列中的數(shù)據(jù)項(xiàng)已經(jīng)在隊(duì)列中時(shí),放棄已經(jīng)存在于隊(duì)列中的數(shù)據(jù)項(xiàng),保存當(dāng)前放入的數(shù)據(jù)項(xiàng)。

        對(duì)于第一種處理方式,在一種特殊的情況下,數(shù)據(jù)項(xiàng)存儲(chǔ)的數(shù)據(jù)是0~N-1之間的整數(shù),那么可以通過(guò)增加一個(gè)新的數(shù)組a[i]或鏈表來(lái)儲(chǔ)存boolean類(lèi)型數(shù)據(jù),當(dāng)隊(duì)列中第i個(gè)位置上已經(jīng)存在數(shù)據(jù)i時(shí)(i<=N-1),設(shè)置a[i]=boolean,那么可以通過(guò)a[i]來(lái)判斷數(shù)據(jù)i是否已經(jīng)存在于隊(duì)列中。第二種處理方式比第一種更為復(fù)雜一些,如果有必要,還可以讓用戶(hù)去選擇采取哪種策略來(lái)避免重復(fù)的數(shù)據(jù)項(xiàng)。但不管怎么樣,我們可以通過(guò)構(gòu)建不同類(lèi)型的ADT,并在ADT中實(shí)現(xiàn)某些我們所需要的功能,將能極大限度地保證數(shù)據(jù)結(jié)構(gòu)和算法的靈活性與清晰的結(jié)構(gòu),使基于ADT的實(shí)現(xiàn)能滿(mǎn)足各種不同的具體應(yīng)用,并方便類(lèi)的重構(gòu)。

    posted on 2006-01-30 00:34 Flyingis 閱讀(1144) 評(píng)論(2)  編輯  收藏 所屬分類(lèi): Algorithm

    評(píng)論

    # re: 數(shù)據(jù)結(jié)構(gòu)中避免數(shù)據(jù)項(xiàng)的重復(fù)  回復(fù)  更多評(píng)論   

    不許重復(fù)的數(shù)據(jù)項(xiàng),聽(tīng)上去想是集合的概念.java collection framework 里的Set,你看是不是解決你說(shuō)的問(wèn)題呀. 當(dāng)然set有不同數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)的子類(lèi)
    2006-02-01 18:35 | 集合

    # re: 數(shù)據(jù)結(jié)構(gòu)中避免數(shù)據(jù)項(xiàng)的重復(fù)  回復(fù)  更多評(píng)論   

    Set的確實(shí)現(xiàn)了類(lèi)似的功能,但不能滿(mǎn)足任何情況下功能上的需要;有時(shí)對(duì)于特定的數(shù)據(jù),需要考慮程序的運(yùn)行效率.這兩種情況下都需要自己重新設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu).即只設(shè)計(jì)自己需要的功能,并在特定情況下滿(mǎn)足效率上的需要.
    2006-02-01 22:31 | Flyingis
    主站蜘蛛池模板: 99久久亚洲综合精品成人网| 精品国产免费观看一区| eeuss免费影院| 免费看成人AA片无码视频吃奶| A片在线免费观看| 亚洲AV综合色区无码另类小说| 亚洲一区二区在线视频| 无码国产精品一区二区免费3p| 日本在线高清免费爱做网站| 免费看无码自慰一区二区| 亚洲色偷偷偷综合网| 一级人做人爰a全过程免费视频| 99xxoo视频在线永久免费观看| 免费黄色app网站| 日韩欧美亚洲中文乱码| 黄色片免费在线观看| 国产一区二区三区在线免费 | 日韩精品无码区免费专区 | 久久精品国产69国产精品亚洲| 亚洲不卡在线观看| 有码人妻在线免费看片| 亚洲一级免费毛片| 国产黄色一级毛片亚洲黄片大全| 亚洲一本综合久久| 免费人成动漫在线播放r18 | 亚洲av成人一区二区三区在线播放| 国产免费观看青青草原网站| 一个人看www免费高清字幕| 亚洲AV无码成人精品区蜜桃| 日韩免费精品视频| av片在线观看永久免费| 亚洲综合久久1区2区3区| 国产又黄又爽又大的免费视频| 在线观着免费观看国产黄| 亚洲一区二区三区首页| 日韩视频在线免费| a毛看片免费观看视频| 伊人婷婷综合缴情亚洲五月| 无遮挡a级毛片免费看| 青青青国产在线观看免费网站| 亚洲一区二区三区高清在线观看|