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+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告