逆置單鏈表的部分區間 VIPKID面試題

2021-08-28 14:45:36 字數 1593 閱讀 5854

給乙個帶頭節點head的單鏈表,給定start和end兩個位置,將這個區間內建。。。

(還是自己太菜了。。。。面試的時候先去處理start和endl了,導致後面沒有處理好,,涼涼啊~~)

不說了,貼上**:

void list::reverse(node* start, node* end, node* head)

node* prev = null;

node* cur = head;

node* end_next = end->next;

node* tmp = null;

//先將start和end之間逆置,然後在特殊處理start和end節點,

while (cur != start)//找到start的前乙個節點prev

while (cur != end)

cur->next = prev;

//處理start和end

if (start->next == null)//如果start是頭結點,就把end邊城head

else

}

#include#include#includeusing namespace std;

typedef struct listnode

}node;

class list

~list()

head = null;

} void push(int data);

node* find(int data);

void reverse(node* start, node* end, node* head = head);

void print();

private:

static node* head;

static node* tail;

};node* list::head = null;

node* list::tail = null;

void list:: push(int data)

else }

node* list::find(int data)

return null;

}void list::reverse(node* start, node* end, node* head)

node* prev = null;

node* cur = head;

node* end_next = end->next;

node* tmp = null;

//先將start和end之間逆置,然後在特殊處理start和end節點,

while (cur != start)//找到start的前乙個節點prev

while (cur != end)

cur->next = prev;

//處理start和end

if (start->next == null)//如果start是頭結點,就把end邊城head

else }

void list::print()

cout << endl;

}void test()

單鏈表部分逆置

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

單鏈表部分逆置

題目描述如下 該程式最關鍵的地方在於reverse函式,這裡使用了兩種實現方式,分別採用了陣列 reverse 及指標 reverse2 的方式,具體實現 如下。include using namespace std struct list list head 陣列實現,時間複雜度和空間複雜度都為o...

單鏈表逆置

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