當前位置:首頁 » 編程語言 » c語言單鏈表逆置

c語言單鏈表逆置

發布時間: 2023-07-25 20:23:11

❶ 寫一c語言演算法,實現對單鏈表就地逆置。

void inverse(LinkList &L)
{
LinkList h,p,q;
q=L;
p=h=L->next; //把q指向舊鏈表頭,p,h指向第二個節點
while(p!=NULL) //倒置,把舊鏈表後一個節點的next指向前一個節點
{
h->next=q;
q=q->next;
p=p->next;
h=p;
}
L->next=NULL; //舊鏈表的頭變成了新鏈表的尾,所以next為NULL
L=h; //把L指向新鏈表的頭
}

❷ 下面是用c語言編寫的對不帶頭結點的單鏈表進行就地逆置的演算法,求大神詳細解釋

voidreverse(linklist&L)
{
linklistp=NULL,q=L;
while(q!=NULL){
L=q->next;//保留下一個節點
q->next=p;
p=q;
q=L;//移動到下一個節點
}
L=p;//指向逆置後的頭節點
}

❸ 用c語言實現單鏈表的逆置,能將此程序詳細的解釋一下嗎

演算法的核心就是reverse函數,其它的都是輔助建立鏈表和輸出鏈表的。
從數據結構的定義來看這是一個帶頭節點的鏈表。要弄的十分明白你要耐心點畫圖看看。我簡單的說下思路:
【head是指向頭結點的】
p=head; //p最開始指向頭結點
s=p->next; //s最開始指向第一個節點
while(s->next!=NULL)//只要沒有到最後一個元素就繼續。最後一個元素的next肯定為NULL
{ //進入核心了樓主
t=s->next; //用t指向s後面的那個元素
s->next=p; //把s指向她前面那個,這個時候就實現了逆向了。而且是就地逆向。元素都沒有動的
p=s; //然後p向後移動s
s=t; //s向後移動到p
這樣到下一輪的時候又可以講下下個再指向剛才那個下一個。一次內推
}
s->next=p; //當最後一個的時候,還是要指向她的前一個。
head->next->next=NULL;//頭指針的下一個是指向原來的第一個。逆向後肯定是最後的那個了。所以最後的一個的next=NULL就明了了。
head->next=s;//s是逆序前的最後一個,逆序後是第一個,所以用頭指向他

畫個圖好好體會下,樓主!

熱點內容
android設置靜音 發布:2025-02-07 20:11:53 瀏覽:696
bin存儲 發布:2025-02-07 20:00:50 瀏覽:202
android載入界面 發布:2025-02-07 19:55:28 瀏覽:870
好礦雲伺服器 發布:2025-02-07 19:54:31 瀏覽:949
java電話簿 發布:2025-02-07 19:49:26 瀏覽:797
超級腳本製作 發布:2025-02-07 19:31:30 瀏覽:487
怎麼查看支付寶的賬號密碼 發布:2025-02-07 19:26:48 瀏覽:17
惠普伺服器查看ip指令 發布:2025-02-07 19:26:47 瀏覽:435
演算法設計模式 發布:2025-02-07 19:15:52 瀏覽:746
伺服器1u能連接幾台電腦 發布:2025-02-07 18:50:02 瀏覽:154