1樓:匿名使用者
樓上兩位大哥,別人都說了單鏈表,乙個說雙向指標沒必要逆置,雙向指標還是單鏈表麼?
乙個直接換頭尾,你能換頭尾實現逆置?
簡直不知所謂。不到十行的**,你要是會的話,寫一下或者給個鏈結又何妨?不會就不要誤導別人。
定義:typedef struct node{
elemtype data;
node* link;
node, *list;
鍊錶逆置:鍊錶逆序需要維護三個指標,乙個指向前乙個*pre,乙個指向當前節點*cur,乙個指向下乙個節點*next以使當前節點的link域改變時,還能訪問到其一下個節點。**如下:
list reverselist(list head){
assert(head);
list next, pre = head, cur = head->link;
while(cur) {
next = cur->link; /儲存當前結點的下乙個結點。
cur->link = pre; /改變當前結點的link域,指向它的前乙個結點;
pre = cur; /指標移到一下個結點。
cur = next;
head = pre; /恢復頭結點。
return head;
2樓:胡國啊松
單鏈表的資料滿大街都是,至於逆置麼,如果你的鍊錶是雙向指標的話就沒有必要了吧。
3樓:洋子and輝
定義頭尾指標,將頭尾指標互指,就可實現逆置……
單鏈表逆置
4樓:華源網路
a:將單鏈表儲存為陣列,然後按照陣列的索引逆序進行反轉。
c:從第2個節點到第n個節點,依次逐節點插入到第1個節點(head節點)之後,最後將第乙個節點挪到新錶的表尾。
d: 遞迴(相信我們都熟悉的一點是,對於樹的大部分問題,基本可以考慮用遞迴來解決。但是我們不太熟悉的一點是,對於單鏈表的一些問題,也可以使用遞迴。
可以認為單鏈表是一顆永遠只有左(右)子樹的樹,因此可以考慮用遞迴來解決。或者說,因為單鏈表本身的結構也有自相似的特點,所以可以考慮用遞迴來解決)
pre指向前乙個結點,cur指向當前結點,next指向下乙個節點。
迴圈實現遞迴實現思路參考。
c 鍊錶改錯,C 單鏈表的建立與輸出 程式求改錯
筆誤吧,第一條交換的 previousnode p prev 改為 p previousnode next 函式送入的previousnode 一定是被交換兩個節點的父節點。就是下面說的鍊錶中的1。你的 裡中previousnode上來就賦為p prev了,此時p還沒有值 為0或隨機值 後面的所有操...
C語言實現堆疊,求C語言程式例項,鍊錶實現堆疊的操作
include char a 1111 char sp a define push x sp x define pop sp define top sp 1 define empty sp a int main void printf 你輸入的內容是 n n sp 0 printf a return...
建立單鏈表
include using namespace std template class list template class linklist template class node template class linklist public list linklist telem a,int n...
c,如何用迴圈來實現賦值,C 迴圈遍歷控制項為其賦值
string a new string 5 int count 0 foreach var item in this.controls if count 5 break 100同理。自己修改下。如果textbox是動態新增的。就在新增的時候寫上textbox.tag 對應的textbox後的值。比如...
單鏈表的問題
沒發現嚴重的錯誤。define null 0 define type struct stu define len sizeof struct stu struct stu type creat int n 建立單鏈表 return head void main 主函式實現列印單鏈表中的資料 free...