數(shù)據(jù)結(jié)構(gòu)中避免數(shù)據(jù)項的重復(fù)
抽象數(shù)據(jù)類型(ADT)是一種只能通過接口訪問的數(shù)據(jù)類型,它是字段與基于字段的操作所構(gòu)成的集合。這里的接口不是interface,而是訪問數(shù)據(jù)的途徑,接口把數(shù)據(jù)的表示和操作方法的實現(xiàn)完全分離開來。兩種最基本的ADT是堆棧和隊列,并且根據(jù)我們的需要,可以構(gòu)建更為復(fù)雜的ADT,例如可以對數(shù)據(jù)項進(jìn)行計數(shù),檢查數(shù)據(jù)項是否存在重復(fù)等等。
在很多實際應(yīng)用中,我們都不允許存在數(shù)據(jù)項重復(fù)的情況,需要對用戶提交的重復(fù)數(shù)據(jù)進(jìn)行合適的處理。讓用戶保證不提交重復(fù)的數(shù)據(jù)可以避免這種情況的發(fā)生,但顯然這種方法并不實際,既然使用ADT就是為了給使用它的程序員提供簡單明了的數(shù)據(jù)類型解決方案,那么我們就應(yīng)該在ADT中來解決這個問題。以隊列為例,一般可以通過兩種策略來處理這個問題:
1. 放棄新輸入的數(shù)據(jù)項:當(dāng)最新放入隊列中的數(shù)據(jù)項已經(jīng)在隊列中時,放棄當(dāng)前輸入的數(shù)據(jù)項。
2. 放棄舊的數(shù)據(jù)項,保存新輸入的數(shù)據(jù)項:當(dāng)最新放入隊列中的數(shù)據(jù)項已經(jīng)在隊列中時,放棄已經(jīng)存在于隊列中的數(shù)據(jù)項,保存當(dāng)前放入的數(shù)據(jù)項。
posted on 2006-01-30 00:34 Flyingis 閱讀(1144) 評論(2) 編輯 收藏 所屬分類: Algorithm