6 1 共享字尾的鍊錶 20分

2021-10-10 07:25:14 字數 1701 閱讀 3053

有一種儲存英文單詞的方法,是把單詞的所有字母串在乙個單鏈表上。為了節省一點空間,如果有兩個單詞有同樣的字尾,就讓它們共享這個字尾。下圖給出了單詞「loading」和「being」的儲存形式。本題要求你找出兩個鍊錶的公共字尾。

;其中list結構定義如下:

typedef

struct node *ptrtonode;

struct node

;typedef ptrtonode list;

/* 定義單鏈表型別 */

l1和l2都是給定的帶頭結點的單鏈表。函式suffix應返回l1和l2的公共字尾的起點位置。

#include

#include

typedef

char elementtype;

typedef

struct node *ptrtonode;

struct node

;typedef ptrtonode list;

/* 定義單鏈表型別 */

void

readinput

( list l1, list l2 )

;/* 裁判實現,細節不表 */

void

printsublist

( ptrtonode startp )

;/* 裁判實現,細節不表 */

ptrtonode suffix

( list l1, list l2 )

;int

main()

/* 你的**將被嵌在這裡 */

如圖儲存的鍊錶

ing
考試之前看了兩次,理解大概意思了,但是做的時候還要有一些問題。

把我之前參考的文章拿過來吧。

pta 6-12 共享字尾的鍊錶 (25 分)

這道題有乙個重要的點,就是兩個鍊錶的指標指向同乙個位址時就是共享字尾的位置,我一開始以為要挨個找字尾。

方法就是:先遍歷一遍鍊錶,分別得到兩個鍊錶的長度len1,len2,然後尋找兩個長度中較長的那乙個,假設len1較長,則令tmp=len1-len2,將p1指標指到tmp的位置,然後兩條鍊錶的指標同時向後移動,直到指標指向的位址是一致的,即為所求。

ptrtonode suffix

( list l1, list l2 )

while

(s)int temp;

p=l1->next;

s=l2->next;

if(len1>len2)

}else

while

(p&&p!=s)

if(p)

return p;

return

null

;}

6 5 共享字尾的鍊錶 20分

有一種儲存英文單詞的方法,是把單詞的所有字母串在乙個單鏈表上。為了節省一點空間,如果有兩個單詞有同樣的字尾,就讓它們共享這個字尾。下圖給出了單詞 loading 和 being 的儲存形式。本題要求你找出兩個鍊錶的公共字尾。函式介面定義 ptrtonode suffix list l1,list l...

PTA6 1 共享字尾的鍊錶

有一種儲存英文單詞的方法,是把單詞的所有字母串在乙個單鏈表上。為了節省一點空間,如果有兩個單詞有同樣的字尾,就讓它們共享這個字尾。下圖給出了單詞 loading 和 being 的儲存形式。本題要求你找出兩個鍊錶的公共字尾。函式介面定義 ptrtonode suffix list l1,list l...

鍊錶題4 共享字尾

共享字尾的鍊錶 20分 有一種儲存英文單詞的方法,是把單詞的所有字母串在乙個單鏈表上。為了節省一點空間,如果有兩個單詞有同樣的字尾,就讓它們共享這個字尾。下圖給出了單詞 loading 和 being 的儲存形式。本題要求你找出兩個鍊錶的公共字尾。ptrtonode suffix list l1,l...