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 否則...