單鏈表部分逆置

2021-07-09 13:21:41 字數 747 閱讀 4570

題目描述如下:

該程式最關鍵的地方在於reverse函式,這裡使用了兩種實現方式,分別採用了陣列(reverse())及指標(reverse2())的方式,具體實現**如下。

#include 

using namespace std;

struct list

;list *head;

// 陣列實現,時間複雜度和空間複雜度都為o(n)

void reverse(int begin, int end, list *&head)

for (int j = i - 1; j > -1; j--)

}}// 指標實現,時間複雜度為o(n),空間複雜度為o(1)

void reverse2(int begin, int end , list *& head)

p->next = q;

t->next = r;

}}list *create()

else

q = p;

}if ( head != null )

return head;

}void displaylist(list *head)

}cout << endl;

}int main()

關於整個鍊錶的逆置可參考:

單鏈表部分逆置

題目來自計蒜客c 部分 題目描述 給定乙個固定的單鏈表,輸入兩個數begin和end。將下標為begin到end之間的內容逆置。給定的單鏈表為 0 2 4 6 8 10 12 14 16 18 測試資料確保begin和end不會超出單鏈表的長度範圍,並且end begin 樣例輸入 2 4 樣例輸出...

單鏈表逆置

單鏈表逆置 include include define item num 10 typedef struct tagnode node node linklist create void linklist destroy node head void linklist print node hea...

單鏈表逆置

name 單鏈表逆置 author 巧若拙 date 22 11 14 16 13 description 分別用遞迴和非遞迴兩種方式實現單鏈表 不含頭結點 的逆置 include include include typedef char elemtype typedef int status 函式...