C++程式:刪除給定單鏈表中的第一個節點


連結串列是一種線性資料結構,包含多個相互連線的節點。每個節點包含兩個欄位:資料欄位和指向下一個節點的地址。

假設我們有一個單鏈表,需要從中刪除第一個節點。例如:

輸入 1 − 4 → 3 → 2 → 1

輸出 − 3 → 2 → 1 →

說明 − 給定單鏈表中的第一個節點是 '4'。刪除第一個節點後,連結串列將變為 3→2→1。

輸入 2 − 1 → 2 → 3 →

輸出 − 2 → 3 →

說明 − 刪除第一個節點 '1' 後,連結串列將變為 2 → 3。

解決此問題的方法

最初,我們有一個包含節點的連結串列。每個節點都包含資料和指向下一個節點的地址。在將資料插入連結串列後,我們將建立一個函式來刪除第一個節點。

因此,我們將建立一個臨時指標,該指標最初指向頭部,並將頭部移動到下一個節點。現在刪除臨時節點並返回連結串列。

  • 函式 deleteAthead(node*&head) 獲取指向頭的指標,並刪除連結串列的第一個節點。

  • 建立一個最初指向頭的臨時指標。

  • 頭部移動到下一個節點。

  • 刪除臨時指標。

  • 返回連結串列。

示例

#include<iostream>
using namespace std;
int main(){
class node{
   public:
      int data;
      node*next;
      node(int d){
         data=d;
         node*next=NULL;
      }
};
void insertAtFirstNode(node*&head, int data){
   node*n= new node(data);
   n->next= head;
   head=n;
}
void print(node*head){
   while(head!=NULL){
      cout<<head->data<<"->";
      head=head->next;
   }
   cout<<endl;
}
void deleteAtFirst(node*&head){
   if(head==NULL){
      return;
   }
   node*temp=head;
   head= head->next;
   delete temp;
   return;
}
int main(){
   node*head= NULL;
   insertAtFirstNode(head,1);
   insertAtFirstNode(head,2);
   insertAtFirstNode(head,3);
   insertAtFirstNode(head,4);
   deleteAtFirst(head);
   print(head);
}

輸出

執行以上程式碼將生成以下輸出:

3 → 2 → 1 →

由於給定的單鏈表是 4 → 3 → 2 → 1 →,刪除第一個節點 4 後,連結串列將變為 3 → 2 → 1 →

更新於: 2021年2月5日

9K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告

© . All rights reserved.