單鏈表翻轉

2021-05-21 19:50:14 字數 1135 閱讀 8760

關於單鏈表的翻轉問題頗為困擾人。下面寫的程式只需遍歷每個節點一次,並且不需要構造輔助接點(通過new的方式)。

另外這個問題可以轉換為乙個迴圈鍊錶結構,很有意思。

// .h

struct node

};class cdatastruct

;cpp檔案:

cdatastruct::cdatastruct(void)

cdatastruct::~cdatastruct(void)

node * cdatastruct::head = null;

node * cdatastruct::generatesinglelink(int num)

return head;

}void cdatastruct::deletenode()

}node * cdatastruct::revertnode()

else

node* now = cnode;

while( null != now)

return  bnode;

}

void cdatastruct::listnode()

cstring output;

node* temp = head;

while ( temp != null )

afxmessagebox( output );

}void cdatastruct::listnode(node* node)

cstring output;

node* temp = node;

while ( temp != null )

afxmessagebox( output );

}// 呼叫方法

cstring output = _t("");

node* init = cdatastruct::generatesinglelink(100);

cdatastruct::listnode();

// revert

node *revert = cdatastruct::revertnode();

cdatastruct::listnode(revert);

cdatastruct::deletenode();

單鏈表翻轉

1,原理 使用p和q兩個指標配合工作,使得兩個節點間的指向反向,同時用r記錄剩下的鍊錶。p head q head next head next null 現在進入迴圈體,這是第一次迴圈。r q next q next p p q q r 第二次迴圈。r q next q next p p q q ...

單鏈表翻轉

相比之前的那個方法 206.reverse linked list 這個方法比較簡單,直接在鍊錶上面進行逆序 容易理解 此 是用於將帶頭結點的單鏈表進行逆序,思路 1.首先設p結點為第乙個有效結點 即頭結點的下乙個節點 q為p的下乙個節點,原因從後面可知。2.將所給節點從頭結點處斷開,然後讓p結點的...

單鏈表翻轉

struct listnode 1 迭代 在遍歷列表時,我們需要將當前節點的 next 指標改為指向前乙個元素 前乙個元素沒有,所以要先儲存其前乙個元素 在更改引用之前,還需要另乙個指標來儲存後乙個節點 2 就地反轉法 把當前鍊錶的下乙個節點pcur插入到頭結點dummy的下乙個節點中,就地反轉。d...