6-2 線性表元素的區間刪除
定義整型變數i,j,k,count
定義乙個陣列a[maxsize]
for i=0 to i小於等於l->last
如果l->data[i]不在mind和maxd這個區間內的元素,則儲存到陣列中,count++
i++end for
for k=0 to k小於count
將陣列中的數值賦值到線性表
end for
記下線性表中最後乙個元素的位置
前面幾次寫**的時候,沒用陣列,自己的思路也有問題,提交測試點一直是段錯誤,後來實在不會,就用陣列來輔助
集合的基本運算(單鏈表)
並集:
定義指標p指向帶頭節點的單鏈表ha的第乙個元素,定義指標q指向帶頭節點的單鏈表hb的第乙個元素,定義指標r,s用尾插法構造新的鍊錶
為新鍊錶hc申請空間
while(p並且q都不為空)
將p、q進行比較,按遞增的順序將它們合併到新鍊錶中
while(p不為空)
將剩下的元素乙個乙個接入到新鍊錶中
while(q不為空)
將剩下的元素乙個乙個接入到新鍊錶中
交集定義指標p指向帶頭節點的單鏈表ha的第乙個元素,定義指標q指向帶頭節點的單鏈表hb的第乙個元素,定義指標r,s用尾插法構造新的鍊錶
為新鍊錶hc申請空間
while(p不為空)
q指向hb的第乙個元素
while q的元素小於p的元素並且q不為空
q移到下乙個元素
if q不為空並且p、q的元素相等
將這個元素插入新煉表中
p移動到下乙個元素
差集定義指標p指向帶頭節點的單鏈表ha的第乙個元素,定義指標q指向帶頭節點的單鏈表hb的第乙個元素,定義指標r,s用尾插法構造新的鍊錶
為新鍊錶hc申請空間
while(p不為空)
q指向hb的第乙個元素
while q的元素小於p的元素並且q不為空
q移到下乙個元素
if q為空並且p、q的元素不相等
將p這個元素插入新煉表中
p移動到下乙個元素
銷毀函式寫錯了,非法越界,而自己一直以為是差集跟交集的函式錯了,找了好久都找不出錯誤,最後同學幫忙找出了錯誤。
修改完之後沒注意到前一次**的括號沒刪完,導致了編譯錯誤
7-1 兩個有序鍊錶序列的合併
建立鍊錶
為l申請空間,定義指標r、s用尾插法構造新的鍊錶
定義乙個elemtype型別的變數x
輸入x的值,
while(x>0)
用尾插法將這個元素插入到鍊錶中
繼續讀入x的值
當不滿足條件時,結束while
合併定義指標p指向帶頭節點的單鏈表ha的第乙個元素,定義指標q指向帶頭節點的單鏈表hb的第乙個元素,定義指標r,s用尾插法構造新的鍊錶
為新鍊錶hc申請空間
while(p並且q都不為空)
將p、q進行比較,按遞增的順序將它們合併到新鍊錶中
while(p不為空)
將剩下的元素乙個乙個接入到新鍊錶中
while(q不為空)
將剩下的元素乙個乙個接入到新鍊錶中
第一次提交忘了改編譯器
第二、三次提交,鍊錶空時,段錯誤,又是銷毀的出錯,非法越界了,跟前一題一樣
後面提交的,輸入時的判斷條件錯誤,寫成x!=-1,有並列數字時錯誤,並列數字也要全部插進去
線性表的儲存結構有兩種:順序和鍊錶
順序表元素的位址是連續的,
鍊錶節點的位址不是連續的,是靠指標連起來的
順序表在查詢資料的時候會比較方便,而鍊錶在增加和刪除的時候,步驟會比順序表的簡單
線性表除第乙個元素外,其他每乙個元素有且僅有乙個直接前驅,除最後乙個元素外,其他每乙個元素有且僅有乙個直接後繼
(此**的**)
該段**的主要作用是判斷我們輸入的密碼是否足夠安全,用c1、c2、c3、c4分別代表4個不同種類的密碼元素,當元素種類小於3的時候,就說明密碼的安全係數不夠高,當元素種類大於等於3時,說明密碼的安全係數夠了
部落格作業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 否則...