DS部落格作業02 線性表

2022-05-19 22:26:26 字數 2878 閱讀 3429

初學線性表,也感覺到資料結構的一大難點,首先是順序表,順序表和陣列類似,儲存位置是連續的,但是順序表多了長度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 線性表是一種典型的線性結構,也是一種最常用的資料結構。線性表包括順序儲存結構和來鏈式儲存結構兩種,其中鏈式儲存結構的鍊錶正是上學期學過一點,在運用上的話,原理是懂了,但是運用起來還是 有點欠佳。剛開始做對鍊錶的一些操作方法有點不清楚,還有就是這學期涉及到時間...