部落格作業2 線性表

2022-05-31 02:12:11 字數 2432 閱讀 7555

void createsqlist(list &l,int a,int n)

} void dispsqlist(list l)

}void delsamenode(list &l)

else cnt++;//否則,記錄相同的個數

} l->length-=cnt; length用來記錄新順序表的長度

}}

定義變數i,j,k.i用來遍歷整個大的順序表,j是用來巢狀遍歷,k是用來新建順序表。

定義變數cnt ,用來記錄每次遍歷過程中與i相等的個數。

for i=0 to i=length

for j=i+1 to j=length

重構順序表,刪除與i相同的數。

length=length-cnt更新每次順序表的長度。

end for

求並集:

定義結構體指標 *pa,*pb,*r,*s;

pa表示l1鍊錶,p2 表示l2鍊錶

遍歷 p1 p2鍊錶

用二路歸併發並用尾插發新建新錶l。

求交集:

同樣遍歷l1,l2鍊錶

尋找相同的數,在將這想同的數用尾插發插入l練表中。

求差集:

遍歷鍊錶l1,

因為兩個鍊錶已經通過sort函式排過序,

所以如果l2的第乙個數大於l1中的前n個數,那麼說明這n 個數都是差集。

以此類推,遍歷l1鍊錶尋找比l2對應的數小的數。

在用尾插發新建鍊錶l

定義乙個n表示輸入的公共長度,定義結構體指標,l1,l2,l,l用來表示合併後的新鍊錶

<1>建立鍊錶l1,l2。過程省略不詳。

<2>合併鍊錶 :定義結構體指標p1,p2,r,s。p1=l1,p2=l2

遍歷鍊錶用二路歸併發,新建鍊錶l。並定義乙個j來記錄新鍊錶長度。

<3>尋找中位數:!(

讓n=j/2;

for i=0 to n

p=p->next;

尋找中位數,並返回p->data

在空表的測評點上有錯誤,我忘記了,真的忘記了,還有乙個是重複資料的錯誤,

這道題還有乙個問題,我還沒有解決

最後乙個問題沒有找到在**出錯了,當初這道題編了很久,**量又長,尤其是在sort哪個函式的地方,換了很多個思路

除錯了很多次,沒什麼耐心了。還有乙個我經常會犯的錯誤是在輸出的地方先讓p=l->next

在遍歷鍊錶的時候while(p->next)從而忽略了空表的情況,導致段錯誤。

同樣這道題也是沒有完全解決,不過大體的思路是出來了

不明白那個錯誤到底是什麼意思,難道是沒有考慮到首尾的臨界條件?還需要老師給與一定的幫助。

兩次的pta總分為 201 分,嘻嘻嘻正好兩分哦

本週基本上晚上有時間的話都會固定的花乙個多小時的時間打**,和看資料結構的書,對自己的安排還算滿意。

要改變的話,就是可以多花點時間看看慕課吧

首先我的認識在我的印象裡,順序表就像是陣列,還有乙個就是鍊錶,我個人跟喜歡鍊錶的使用,感覺鍊錶的靈活性更高,

而在一些題目有用順序表思路會更加清晰,比如說在求多項式導數那一題,我用鍊錶的方式,卻是會出現個別點的錯誤,

很容易出現斷錯誤,而用陣列來存放的話就更加的簡單。

不好意思還沒有去弄,我會盡快去弄的到時候把截圖補齊。

部落格作業2 線性表

定義變數n存放順序表長度,i,j 0控制迴圈,l 1存放子列長度,k,m,max存放最大子列長度,flag存放最長子列陣列下標,sum 0求和 scanf d n int a n 存放母列 b 100000 存放子列長度 for i 0 to n 輸入母列 end for for i 1 to n ...

部落格作業2 線性表

定義整型變數i作為迴圈變數,j用來儲存所刪除節點的個數 for i小於順序表長度時執行迴圈 if 順序表中第i個數大於mind且小於maxd j 否則l data i j l data i 本題第一次提交時用了while迴圈語句,結果編譯器判定是段錯誤,後來改為for迴圈時提交答案正確。void c...

部落格作業2 線性表

for i 0 to length 1 if j大於等於i length為k 剛開始把重新賦值的 放在了第二個for裡面。linklist p l 用p代替l while p next不為0 if m為0或者大於n 不存在返回 1 while j小於n m 1且p不為0 if p為0 返回 1 否則...