簡體   English   中英

我需要刪除鏈表中的節點,如何找到它之前的節點,以便重新排列列表?

[英]I need to delete a node in a linked list, how do I find the node that comes BEFORE it so I can rearrange the list?

這是為了學校作業。 我必須使用一個搜索方法,它返回我搜索的節點或它之前的節點(如果它不存在)。 顯然,如果我想刪除一個節點,它將返回一個節點,我將無法找到它之前的節點。 這是搜索方法的代碼:

private myNode search(myEntry searchEntry)
{
  myNode ref = first;
  myNode pre = null;

  while(ref != null)
  {
     if(searchEntry.compareTo(ref.data) < 0)
        break;
     pre = ref;
     ref = ref.link;
  }
  return pre;
}

第一個是第一個節點,ref是指針,pre是指針前面的節點。 也許我會使用雙鏈表如果它不需要我重寫太多但是如果有一個簡單的方法來找到我嘗試使用這種搜索方法刪除的節點的前身那么我會喜歡知道。 我根本不應該使用雙向鏈表。

您無法使用搜索方法執行此操作。 您必須實現一個獨特的搜索方法,該方法返回節點的前任,然后將其刪除。

如果你需要刪除ref,那么你需要先刪除。 要刪除ref,您可以編寫類似的內容

pre = list.search(entry); //find the prescending node
ref = pre.link;           //get the node you want to delete
pre.link = ref.link;      //reassign link
ref.delete();             //delete node

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM