當前位置:首頁 » 編程語言 » c語言交換鏈表中的相鄰結點
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言交換鏈表中的相鄰結點

發布時間: 2022-09-19 06:29:17

1. 一個帶頭結點的雙向循環鏈表,現在交換任意兩個結點p、q(p、q不一定相鄰),代碼怎麼寫 c語言

定義一個中間指針temp
然後
p->back->next = q;//讓p的前一個節點指向q
q->back->next = p;//讓q的前一個節點指向p

temp = p->next;
p->next = q->next;
q->next = temp; //交換next指針
temp = p->back;
p->back = q->back;
q->back = temp; //交換back指針

2. c語言編寫一個程序,通過改變指針來交換鏈表中的兩個相鄰的結點,

定義一個中間指針temp
然後
p->back->next
=
q;//讓p的前一個節點指向q
q->back->next
=
p;//讓q的前一個節點指向p
temp
=
p->next;
p->next
=
q->next;
q->next
=
temp;
//交換next指針
temp
=
p->back;
p->back
=
q->back;
q->back
=
temp;
//交換back指針

3. 如何交換鏈表中的兩個節點

如果是要交換頭指針為h的單鏈表中的兩個值為x和y的結點(省去變數的聲明):

for(p=h;p->next.data!=x;p=p->next);
for(q=h;q->next.data!=y;q=q->next);

t=p->next.next; p->next.next=q->next.next; q->next.next=t;

t=p->next; p->next=q->next.next; q->next=t;

4. C語言 用鏈表做插入排序 之 交換節點的問題

從5->7->9->3->8到7->5->9->3->8為例
首先把5的next指針指向7的next指針,這樣就成了5->9->3->8和7->9->3->8
然後把7的next指針指向5,即7->5->9->3->8,交換完畢
建議看看數據結構的鏈表那節
我說個一般情況吧
鏈表
...->p1->b1->...->p2->b2->...
其中需要交換b1和b2
首先p1的next指向b2,p2的next指向b1,
然後用一個臨時指針temp指向b1的next指針,
再b1的next指向b2的next指針,b2的next指向temp
交換完畢。
像你說的這類單鏈表的節點交換都可以套用上面的方法

5. c語言雙鏈表節點交換演算法,用指針

void change_list_node (struct node *node1,struct node *node2)
{
struct node *temp = node1 -> prev;

(node1 -> prev) -> next = node2;
(node2 -> prev) -> next = node1;
node1 -> prev = node2 -> prev;
node2 -> prev = temp;
node1 -> next -> prev = node2;
node2 -> next -> prev = node1;
temp = node1 -> next;
node1 -> next = node2 -> next;
node2 -> next = temp;
}

6. C++鏈表如何實現節點交換

c++鏈表實現節點轉換有兩種方法:
1)結點交換時機上可以看成是節點里的值交換;
2)直接把節點的地址next的指向改變。
例如:交換LnodeA和LnodeB
用while找到節點的前一個節點pA->next = LnodeA,pB->next = LndoeB
然後pTemp = LnodeA->next;
pB->next = LnodeA;
LndoeA ->next = LnoedeB->next;
pA->next = LndoeA;
LnodeA->next = pTemp;

7. C語言問題:怎樣實現對鏈表中兩個結點的交換

有2方法:
第一,找到要交換的2個結點,將2個結點內的數據交換就完成2個結點交換.
因為2個結點不同就是2個結點內數據有區別.
第二,拿掉2個結點,並保持鏈表完好,再將2結點前後倒置,插到原位置.
當然,如果是雙向鏈表要麻煩些,但思路是一致的.