單詞壓縮儲存

2021-10-25 02:47:27 字數 2032 閱讀 9840

如果採用單鏈表儲存單詞,可採用如下辦法壓縮儲存空間。如果兩個單詞的字尾相同,則可以用同乙個儲存空間儲存相同的字尾。例如,原來分別採用單鏈表儲存的單詞str1「loading」和單詞str2「being」,經過壓縮後的儲存形式如下。

請設計乙個高效的演算法完成兩個單鏈表的壓縮儲存。

要求:閱讀預設**,編寫函式snode * ziplist( snode * head1, snode * head2 )ziplist的功能是:在兩個串鍊表中,查詢公共字尾,若有公共字尾,則壓縮 並返回指向公共字尾的指標;否則返回null。

前置**:

#include

#include

typedef

struct sdata

snode;

void

setlink

( snode *

,char*)

,outlink

( snode *);

intlistlen

( snode *);

snode *

ziplist

( snode *

, snode *);

snode *

findlist

( snode *

, snode *);

intmain()

void

setlink

( snode *head,

char

*str )

return;}

void

outlink

( snode * head )

printf

("\n");

return;}

intlistlen

( snode * head )

return len;

}snode *

findlist

( snode * head1, snode * head2 )

while

( m < n )

while

( p1-

>next !=

null

&& p1-

>next != p2-

>next )

return p1-

>next;

}/* here is waiting for you! */

/* snode * ziplist( snode * head1, snode * head2 )

*/

測試輸入

期待輸出

測試用例1

abcdef

dbdefdef

測試用例2

ation

abationation

snode *

ziplist

(snode *head1, snode *head2)

while

(m < n)

while

(p1-

>next !=

null

&& p1-

>next-

>data != p2-

>next-

>data)

snode *startp1 = p1;

snode *startp2 = p2;

while

(p1-

>next !=

null

)else

} startp2-

>next = startp1-

>next;

return startp1;

}

三 單詞壓縮儲存

如果採用單鏈表儲存單詞,可採用如下辦法壓縮儲存空間。如果兩個單詞的字尾相同,則可以用同乙個儲存空間儲存相同的字尾。例如,原來分別採用單鏈表儲存的單詞str1 loading 和單詞str2 being 經過壓縮後的儲存形式如下。請設計乙個高效的演算法完成兩個單鏈表的壓縮儲存。要求 閱讀預設 編寫函式...

單詞的壓縮編碼

1 描述820 給定乙個單詞列表,我們將這個列表編碼成乙個索引字串 s 與乙個索引列表 a。例如,如果這個列表是 time me bell 我們就可以將其表示為 s time bell 和 indexes 0,2,5 對於每乙個索引,我們可以通過從字串 s 中索引的位置開始讀取字串,直到 結束,來恢...

矩陣壓縮儲存

在c中矩陣的表示是用二維陣列。那麼首先要搞清楚陣列行列與矩陣行列的對應。在c語言中二維陣列是按行儲存的。即順序儲存每一行。第一行,第二行。最後一行 看一下例子 陣列數量替換成arrs i j 方便說明。int arrs i j test 二維陣列記憶體位置 for i 0 i 3 i 在上例中i表示...