DS部落格作業02 線性表

2022-05-16 20:23:09 字數 2391 閱讀 3682

1.2談談你對線性表的認識及學習體會

(1)線性表是一種典型的線性結構,也是一種最常用的資料結構。線性表包括順序儲存結構和來鏈式儲存結構兩種,其中鏈式儲存結構的鍊錶正是上學期學過一點,在運用上的話,原理是懂了,但是運用起來還是

有點欠佳。剛開始做對鍊錶的一些操作方法有點不清楚,還有就是這學期涉及到時間複雜度和空間複雜度的問題,但是目前對我而言任重而道遠。先解決一下最起碼的程式設計。對於自己的程式設計能力還是希望多看看別人打得好同學的**,並且請教對方的方法以及思路。不過學習的最好的用處,還是在於自己的理解和運用。

(2)鍊錶用起來也是非常方便,它實現儲存空間動態管理。其中每個儲存結點不僅包括元素本身的資訊(成為資料域),而且包括表示元素之間邏輯關係的資訊,在c和c++中用指標來實現,這稱為指標域。鍊錶也分有單鏈表和雙鏈表。頭指標通過頭結點的指標來標識鍊錶,相應的指向首結點或者開始結點的指標稱為尾指標。

本題要求設計乙個演算法,從順序表中刪除重複的元素,並使剩餘元素間的相對次序儲存不變。

建順序表函式(傳入鍊錶指標,傳入順序表長度n,輸入陣列)

int i;

動態申請空間存放l順序表;

for迴圈輸入陣列存放到順序表中,長度為陣列最大下標

刪除重複陣列函式(傳入順序表指標)

int i=1,k,len;

for i=0 // i 遍歷順序表

for j=i+1 // j 遍歷i之後的順序表元素,並每次與 i 位的元素進行比較

if // 如果第一層 i 遍歷到的元素等於第二層 j 遍歷到的元素則

定義兩個指標

申請空間存放鍊錶,建立頭結點

r=l ; //r 始終指向尾結點,初始時指向頭結點

for

動態申請空間迴圈

建立資料結點s,將陣列元素放進data

將結點s插入到結點r之後

r=s,將頭結點r換為s

尾節點的next置為null

建表函式

定義 i,j

new list //新建順序表,申請空間

表長度為輸入的長度也就是結點個數也就是n個正整數

for 迴圈輸入n個正整數到順序表中

cin->l->data[i]

插入元素函式

定義i =0,j

while 在有效長度內找到比插入元素小的元素的位置 使得 i++,到下一位

for j=l->length ;j>i;j--

l->data[j]=l->data[j-1] // 從 比插入元素大的元素開始將後面的元素迴圈後移

將插入元素放到表中i++後的位置

表長度加1

輸出表函式

if 表長度為零 輸出error

else

先輸出第一位元素,

for 然後 從i=1 開始輸出空格 加元素

1. 把順序表中的前p個元素逆序儲存,

2. 再把順序表中的後length-p個元素逆序儲存,

3. 然後把整個順序表逆序儲存。

比如:v = 1 2 3 4 5 6 7 p = 3

DS部落格作業02 線性表

方法,還有迴圈鍊錶和雙鏈表的建立,學習了這幾種鍊錶,在今後的使用鍊錶中有了更多的選擇,同時也提高了解部分題目的效率。在順序表這一方面,主要學習的是對順序表的插入和刪除操作,鍊錶也同樣是插入和刪除,再加上擴充套件的一些操作。這兩種線性表各有 其優缺點,在使用時還需要分情況考慮。插入函式listinse...

DS部落格作業02 線性表

這階段學習學的是線性表,學習線性表的兩種儲存順序 鍊錶和順序表,體會了兩者儲存結構之間的區別,通過對順序表,單鏈表,雙鏈表,迴圈鍊錶,有序表的特點的了解,和學習它們的演算法設計方法,綜合運用線性表解決一些問題,在查資料時,也領悟一點單雙鏈表的在一些方面使用的優劣,對線性表的知識更加加深一點。void...

DS部落格作業02 線性表

線性表的很多操作都有多種實現方法,在這些操作方法之間我們要盡量選擇一種最優的方法,這就對個人的思維能力有一定要求。而在對線性表進行操作時,有一些細節也要特別注意,比如說鍊錶中指標域的指向,我在對鍊錶進行操作時就經常忽略指標的指向已經改變而導致出錯。相加 等同於兩個有序鍊錶合併,只有在兩個指數相同的節...