初學線性表,也感覺到資料結構的一大難點,首先是順序表,順序表和陣列類似,儲存位置是連續的,但是順序表多了長度length,
麻煩的是順序表的插入和刪除需要移動一大部分資料。有序表就是把資料排好序,有序表可以用順序表儲存,也可以用單鏈表儲存。
是乙個比較困難的部分,需要花大量時間去理解,才能夠消化。
要求實現3個函式,在遞增的順序表中插入乙個新整數,並保持該順序表的有序性
2.1.1設計思路(偽**)遍歷順序表,記錄要插入的位置i,將i後面的資料後移,將要插入的資料插入位置i
定義i,j
for i=0 to n-1
if l->data[i]>x //尋找到要插入的位置
break;
end for
for j=n to i //將l的第i項後的後移一位
l->data[j]=l->data[j-1]
l->data[i]=x //將x插入到i的位置
2.1.2**截圖
2.1.3本題pta提交列表說明
q1:考慮範圍時沒有考慮完整
a1:經過幾次資料輸入驗證,除錯好範圍
本題要求實現乙個函式,將給定單向鍊錶逆置,即表頭置為表尾,表尾置為表頭。鍊錶為帶頭結點鍊錶。請實現逆轉函式
2.2.1設計思路(偽**)新建乙個鍊錶,將l鍊錶用頭插法讀取到新建的煉表裡
申請node,head結點
為newl申請動態空間
讓head為newl的頭節點;
while l->next //利用頭插法,把l鍊錶的值重構到新煉表裡
讓 node->next 指向 newl->next
讓 newl->next 指向 node
l 指向 l->next;
end while
l=head;
2.2.2**截圖
2.2.3本題pta提交列表說明
q1:編譯錯誤是l傳參的結構體名錯誤
a1:在編譯軟體改了結構體,忘了pta裡給的是函式,結構體不能改
q2:後來只有空鍊錶可以過
a2:修改了迴圈裡鏈的關係
鍊錶l是乙個有序的帶頭結點鍊錶,實現有序鍊錶插入刪除操作。
2.3.1設計思路(偽**)插入:遍歷鍊錶,以l->next->data與要插入的e作比較,當l->next->data大於e時,
讓e所在的結點指向l->next,l->next指向e所在的結點
刪除:遍歷鍊錶,找到l->next->data與要刪除的e作比較,找到後,令l->next指向
l->next->next;
while p->next //以p->next為判斷的好處的,可以找到等於e的上個節點
if p->next->data >= e
break
p 指向 p->next
end while
r->next 指向 p->next
p->next 指向 r
2.3.2**截圖
2.3.3本題pta提交列表說明
q1:鍊錶全刪這個點沒考慮到
a1:反覆看題目才發現,看題很重要啊
線性表是n個元素的有序集合(n≥0),n是線性表中元素的個數,稱為線性表的長度。可以用一組位址連續的儲存單元依次
儲存線性表中元素,採用這種儲存方式的線性表稱為順序表。請在順序表上實現運算,實現順序表的逆置,刪除表中所有
元素值等於x的元素
輸入三組資料,順序表元素型別分別為整型、字元型和實型。
每一組第一行給出元素數目n(0
寫法上比較簡潔,而且使用標記,這樣使得判斷更加簡單方便,在刪除函式裡,return 返回可以區別是否有找到要刪除的數
逆置使用的是陣列,覺得還是用鍊錶比較節約空間
DS部落格作業02 線性表
方法,還有迴圈鍊錶和雙鏈表的建立,學習了這幾種鍊錶,在今後的使用鍊錶中有了更多的選擇,同時也提高了解部分題目的效率。在順序表這一方面,主要學習的是對順序表的插入和刪除操作,鍊錶也同樣是插入和刪除,再加上擴充套件的一些操作。這兩種線性表各有 其優缺點,在使用時還需要分情況考慮。插入函式listinse...
DS部落格作業02 線性表
這階段學習學的是線性表,學習線性表的兩種儲存順序 鍊錶和順序表,體會了兩者儲存結構之間的區別,通過對順序表,單鏈表,雙鏈表,迴圈鍊錶,有序表的特點的了解,和學習它們的演算法設計方法,綜合運用線性表解決一些問題,在查資料時,也領悟一點單雙鏈表的在一些方面使用的優劣,對線性表的知識更加加深一點。void...
DS部落格作業02 線性表
1.2談談你對線性表的認識及學習體會 1 線性表是一種典型的線性結構,也是一種最常用的資料結構。線性表包括順序儲存結構和來鏈式儲存結構兩種,其中鏈式儲存結構的鍊錶正是上學期學過一點,在運用上的話,原理是懂了,但是運用起來還是 有點欠佳。剛開始做對鍊錶的一些操作方法有點不清楚,還有就是這學期涉及到時間...