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 →
广告