部落格園作業02 線性表

2022-05-17 18:26:08 字數 3236 閱讀 6298

本週我們學習了順序表和煉表的知識,自我感覺對它們已經有了初步的認識,但是可能因為鍊錶相對於順序表的操作可能會更加的複雜與抽象,對於一些相對複雜的操作可能還不是特別的熟悉,比如說逆置與插入,每次做題前都要想很久該怎麼做,這其實就是對鍊錶的基礎掌握太不紮實。通過這一周資料結構的學習,我能很明顯感覺到資料結構相較於c,會更加的理論化和抽象化,需要我們能更加深層的理解**,要我們清楚的知道要怎麼進行步驟。如果你只敲完**,卻不去真正理解,去想明白他的結構與變換方法,就會像我一樣,敲完一題**,過了幾天,又把它的原理忘得一乾二淨。吸取了上次的教訓,在今後的資料結構的學習中,我要更加頻繁的去讀**,去理解**,而不是一打完就晾在一旁,勤能補拙!
思路:先將兩個鍊錶的資料依次存入乙個陣列中,在對這個陣列進行排序和刪除重複元素的操作,再將這個陣列通過尾插法插入乙個新煉表中,再將新鍊錶的值賦給要返回的鍊錶。

偽**:

排序函式

定義整形陣列 a

定義三個整型變數i=0,k,j

linklist p;

p=p->next;

while(p不為空)

資料存入陣列

p移向下乙個節點

i++end while

linklist c;

c=l2->next

while(c不為空)

資料存入陣列

c移向下乙個節點;

i++;

end while

for j=0 to i

for k=0 to j

冒泡法排序

end for

end for

定義整型變數 q,w=0;

刪除陣列裡的重複元素

linklist s r l;

定義乙個整型變數 m

用尾插法將陣列資料寫入乙個鍊錶

思路:通過遍歷鍊錶找到插入位置進行插入,這樣插入的得到的鍊錶是有序的,在遍歷鍊錶得到相同的元素,繼續刪除,輸出鍊錶

偽**:

插入函式

linklist p,r,q

q = new lnode;

p = l->next;

r = l;

q->data = e;

q->next = null;

while (p)

if (p->data >= e)//尋找插入位置

記錄位置並插入

end if

後移end while

q->next = p;

r->next = q;

刪除函式

if (l->next == null) return;

linklist p, r, c;

p = r = l;

c = l->next;

while (r->next)

if (c->data == e)//尋找刪除元素

刪除資料

return;

end if

記錄位置並後移

思路:將兩個有序表裡的資料按順序輸入乙個陣列中,在輸出這個陣列中相應位置的元素

偽**:

#include #define maxsize 100000

using namespace std;

typedef int elemtype;

typedef struct

list;

typedef list *sqlist;

void createlist(sqlist &l,int n);//建順序表

void linenode(sqlist &l1,sqlist &l2,int n);//排序

int main()

void createlist(sqlist &l,int n)

void linenode(sqlist &l1,sqlist &l2,int n)

{ 定義兩個整型變數i,j和num,t都等於0

sqlist l;

定義乙個整形陣列

判斷大小分別以小的資料寫入陣列,i與j要小於兩條鏈的長度

長度翻倍

從順序表中刪除具有最小值的元素(假設唯一)並由函式返回被刪除元素的值。空出的位置由最後乙個元素填補,若順序表為空則顯示出錯資訊並退出執行。

搜尋整個線性表,查詢最小值元素的位置,並記錄該位置,然後用最後乙個元素的值將其覆蓋,並返回最小值。

為什麼不傳遞值,而傳遞位址?

函式內部的都是區域性變數,對這些變數的操作只在函式內部有效。細節一點兒,區域性變數存放在計算機的暫存器中,不寫入主存,也就不改變記憶體中的c**(資料)。

這裡如果函式呼叫傳遞的是順序表l,l就相當於區域性變數,相當於複製了l,並不會修改最初的l。而如果引用l的位址,可以直接操作記憶體,修改的就是l,修改後的內容也會被寫入l對應的儲存空間。

部落格作業02 線性表

給定乙個順序儲存的線性表,請設計乙個演算法查詢該線性表中最長的連續遞增子串行。例如,1,9,2,5,7,3,4,6,8,0 中最長的遞增子串行為 3,4,6,8 查詢最長連續遞增子串行函式 定義整型變數i,j表示迴圈變數,k用來作找到後新陣列下標 定義整型變數 maxlength 1 maxleng...

DS部落格作業02 線性表

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

DS部落格作業02 線性表

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