線性表逆置(順序表和單鏈表)

2021-08-28 08:49:03 字數 1176 閱讀 2243

這幾天練習了下線性表的逆置,順序表比較簡單,就是陣列的位置交換。

順序表的逆置

單鏈表的逆置

頭插法就地逆置

遞迴順序表的逆置:

中間變數temp,交換首位兩個元素的位置。

void listreverse(sqlist &l)sqlist;

status listinit(sqlist &l)

status listprint(sqlist l)

elemtype *p=&(l.elem[pos-1]);

elemtype *q=&(l.elem[l.length-1]);

for(;q>=p;q--)

*p=e;

l.length++;

return true;

}void listreverse(sqlist &l)

listreverse(la);

listprint(la);

}

執行結果如下:

單鏈表的逆置:

linklist reverselinklist(linklist &l)

linklist newh=(linklist)malloc(sizeof(lnode));

newh->next=prev;

return newh;

}

就地逆置最終prev指向原來鍊錶的尾元結點,需要新建乙個頭結點指向prev,否則該單鏈表是無頭結點的。

過程如下:

linklist recursionreverse(linklist &l)
遞迴是從最後乙個結點開始之前的結點逐個返回,但是需要將每一次返回的l->next設定成null,否則下一次遞迴會使l->next->next指向的結點發生改變。

過程如下:

鍊錶的部分基本操作包含在第乙個完整**中。

線性表(二) 單鏈表(4) 單鏈表的逆置

all right resvered 檔名稱 單鏈表的逆置.cpp 作 者 鄭兆涵 線性表 二 單鏈表 4 問題 設計乙個演算法,將乙個帶頭結點的資料域依次為a1,a2,an n 3 的單鏈表的所有結點逆置,即第乙個結點的資料域變為an,最後乙個結點的資料域為a1。實現這個演算法,並完成測試。程式設...

轉 線性表(順序表和單鏈表)

大神 權侵刪 一 定義 是n個型別相同的資料元素的有限序列。線性表元素的個數n n 0 定義為線性表的長度,當n 0時,稱為空表。在較複雜的線性表中,乙個資料元素可以由若干個資料項組成。三 線性表的順序儲存結構 1 順序儲存定義 線性表的順序儲存結構,指的是用一段位址連續的儲存單元依次儲存線性表的資...

線性表 順序表與單鏈表(模板)

順序表 線性表的順序儲存結構,靜態儲存分配,通常用一位陣列來實現 include using namespace std const int maxsize 100 template typename t class seqlist template typename t seqlist seqli...