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)获取指向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→