數(shù)據(jù)結構-鏈表

1. 多項式ADT

需求:多項式的數(shù)學運算
eg: P1(X) = 10X1000 + 5X14 + 1 , P2(X) = 3X1990 - 2X1492 + 11X + 1
1.使用一個簡單數(shù)組來存儲這些系數(shù)。
  • 數(shù)組的長度就等于最高的冪數(shù)
  • 從index 0-> Max 依次存儲冪數(shù)從高到低的各系數(shù)。
typedef struct 
{
    int CoeffArray[MaxDegree + 1];
    int HighPower;  
} * Polynomial;

void ZeroPolynomial(Polynomial Poly)
{
    int i;
    for( i = 0; i <= MaxDegree; i ++)
        Poly -> CoeffArray[i] = 0;
    Poly -> HighPower = 0;
}
//相加
void AddPolynomial(const Polynomial Poly1, const Polynomial Poly2, Polynomial PolySum) 
{
    int i;
    ZeroPolynomial(PolySum);
    PolySum -> HighPower = Max(Poly1 -> HighPower, Poly2 -> HighPower);
    for( i = PolySum -> HighPower; i >= 0; i--)
        PolySum -> CoeffArray[i] = Poly1 -> CoeffArray[i] + Poly2 -> CoeffArray[i];
}
//相乘
void MultPolynomial(const Polynomial Poly1, const Polynomial Poly2, Polynomial PolyProd)
{
    int i,j;
    ZeroPolynomial(PolyProd);
    PolyProd -> HighPower = Poly1 -> HighPower + Poly2 -> HighPower;

    if (PolyProd -> HighPower > MaxDegree)
        Error("Exceeded array size");
    else 
        for(i = 0; i <= Poly1 -> HighPower; i++) 
            for(j = 0; j <= Poly2 -> HighPower; j++)
                PolyProd -> CoeffArray[i + j] += Poly1 -> CoeffArray[i] * Poly2 -> CoeffArray[j];
}
2.優(yōu)化的方式是使用單鏈表來存儲數(shù)據(jù)孝治,多項式的每一項含在一個單元中墅拭,并且這些單元以次數(shù)遞減的順序排序。如圖:
image.png
鏈表實現(xiàn)的類型聲明
typedef struct Node* PtrToNode;

struct Node
{
    int Coefficient;
    int Exponent;
    PtrToNode Next;
};

typedef PtrToNode Polynomail;

2. 基數(shù)排序

需求: 我們有N個整數(shù)拧额,范圍從1到M宿亡,將其進行排序常遂。
基礎方式: 桶式排序創(chuàng)建一個數(shù)組稱之為Count,大小為M挽荠,并初始化為零克胳。Count有M個單元,開始時他們都是空的圈匆。當Ai被讀入時Count[Ai]增1漠另。這個方法的缺點很明顯,如果M足夠大跃赚,數(shù)組就太大了酗钞。
優(yōu)化方式: 基數(shù)排序是在上面的桶式排序的基礎上優(yōu)化出來的。也就是使用多趟桶式排序来累。具體算法就是通過最低(有效)位(對基數(shù)N所取的位)進行桶式排序,然后對次最低(有效)位進行窘奏。等等嘹锁。
數(shù)列:64,8着裹,216领猾,512,27骇扇,729摔竿,0,1少孝,343继低,125。為了使問題簡化稍走,此時操作按基是10進行袁翁,不過一般并不做這樣的假設柴底。(第一趟是根據(jù)個位來排列,第二趟是根據(jù)十位粱胜,第三趟是根據(jù)百位)
image.png

3. 多重表

需求: 一所有40000名學生和2500門課程的大學需要生成兩種類型的報告柄驻。第一個報告高列出每個班的注冊者,第二個報告列出每個學生注冊的班級焙压。
1. 常見的實現(xiàn)方法是使用二維數(shù)組鸿脓。這樣一個數(shù)組將有1億項。平均大約一個學生注冊三門課程涯曲,因此實際上有意義的數(shù)據(jù)只有120000項野哭,大約占0.1%
2. 循環(huán)表。 節(jié)省了大量空間掀抹,但是要花費時間虐拓。這里我把表結構的截圖發(fā)出來。C1傲武,C2蓉驹,C3,C4為課程揪利,S1态兴,S2,S3疟位,S4為學生瞻润。所有的表都各有一個表頭并且都是循環(huán)的。比如甜刻,為了列出C3班的所有學生绍撞,我們從C3開始通過向右行進而遍歷其表。第一個單元屬于學生S1得院。雖然不存在明顯的信息傻铣,但是可以通過跟蹤該生鏈表直達到該表表頭而確定該生的信息。一旦找到該生信息祥绞,我們就轉回到C3的表并找到可以確定屬于S3的另一個單元非洲,我們繼續(xù)并發(fā)現(xiàn)S4和S5也在該班上。
image.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末蜕径,一起剝皮案震驚了整個濱河市两踏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌兜喻,老刑警劉巖梦染,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異朴皆,居然都是意外死亡弓坞,警方通過查閱死者的電腦和手機隧甚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來渡冻,“玉大人戚扳,你說我怎么就攤上這事∽逦牵” “怎么了帽借?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長超歌。 經常有香客問我砍艾,道長,這世上最難降的妖魔是什么巍举? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任脆荷,我火速辦了婚禮,結果婚禮上懊悯,老公的妹妹穿的比我還像新娘蜓谋。我一直安慰自己,他們只是感情好炭分,可當我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布桃焕。 她就那樣靜靜地躺著,像睡著了一般捧毛。 火紅的嫁衣襯著肌膚如雪观堂。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天呀忧,我揣著相機與錄音师痕,去河邊找鬼。 笑死而账,一個胖子當著我的面吹牛七兜,可吹牛的內容都是我干的。 我是一名探鬼主播福扬,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼惜犀!你這毒婦竟也來了铛碑?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤虽界,失蹤者是張志新(化名)和其女友劉穎汽烦,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體莉御,經...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡撇吞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年俗冻,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片牍颈。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡迄薄,死狀恐怖,靈堂內的尸體忽然破棺而出煮岁,到底是詐尸還是另有隱情讥蔽,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布画机,位于F島的核電站冶伞,受9級特大地震影響,放射性物質發(fā)生泄漏步氏。R本人自食惡果不足惜响禽,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望荚醒。 院中可真熱鬧芋类,春花似錦、人聲如沸腌且。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽铺董。三九已至巫击,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間精续,已是汗流浹背坝锰。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留重付,地道東北人顷级。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像确垫,于是被迫代替她去往敵國和親弓颈。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內容