亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在單鏈表中交換兩個節點及其內容?

如何在單鏈表中交換兩個節點及其內容?

慕虎7371278 2022-05-25 17:11:22
我用谷歌搜索了這個,但他們都在談論“交換節點而不交換數據”。我嘗試自己編寫一個交換節點方法:public void swapNodes(int num1, int num2) {    if(num1 == num2) {        return;    }    Node currentNum1 = head;    Node currentNum2 = head;    Node waitForSwap1 = null;    Node waitForSwap2 = null;    while (currentNum1 != null) {        if (currentNum1.data == num1) {            waitForSwap1 = currentNum1;            System.out.println();            System.out.println("waitForSwap 1");            System.out.println(waitForSwap1.data);        }        currentNum1 = currentNum1.next;    }    while (currentNum2 != null) {        if (currentNum2.data == num2) {            waitForSwap2 = currentNum2;            System.out.println("waitForSwap 2");            System.out.println(waitForSwap2.data);        }        currentNum2 = currentNum2.next;    }    currentNum1 = waitForSwap2;    currentNum2 = waitForSwap1;    System.out.println("currentNum1");    System.out.println(currentNum1.data);    System.out.println("currentNum2");    System.out.println(currentNum2.data);}這是結果如您所見,currentNum1并currentNum2相互更改,但打印結果沒有交換。如何交換兩個節點及其數據?
查看完整描述

1 回答

?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

好的,如果你只想交換數據,而不是節點,這里是:


  public void swapNodes(int num1, int num2) {


    if (num1 == num2) {

      return;

    }


    Node node1 = null;

    Node node2 = null;


    Node cur = head;

    while(cur != null) {

      if (num1 == cur.data) {

        node1 = cur;

      }

      if (num2 == cur.data) {

        node2 = cur;

      }

      cur = cur.next;

    }


    if (node1 == null || node2 == null)

      return;


    int tmp = node1.data;

    node1.data = node2.data;

    node2.data = tmp;

  }


查看完整回答
反對 回復 2022-05-25
  • 1 回答
  • 0 關注
  • 132 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號