我一直在尝试从单个链表中删除第一个节点.我做的是如下
生成一个简单的链表后: 1 - > 2 -> 3 -> 4 -> 5
并调用我的删除第一个节点的方法,结果是不正确的.它返回以下链表:0 -> 2 -> 3 -> 4 -> 5
我不明白为什么0仍然存在.
#include <cstdlib>
#include <iostream>
using namespace std;
struct Node
{
int data;
struct Node *next;
};
Node* Delete(Node *head)
{
Node* temp = head;
head = head->next;
delete temp;
return head;
}
int main(void) {
Node* head = new Node();
Node* temp = head;
for(int i=1; i<=5; i++)
{
Node* newNode = new Node();
newNode->data = i;
newNode->next = NULL;
temp->next = newNode;
temp = newNode;
}
Delete( head = head->next );
while(head != NULL)
{
cout<<head->data<<" ";
head = head->next;
}
cout<<endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
你需要改变你的召唤方式Delete.它应该是
head = Delete ( head );
Run Code Online (Sandbox Code Playgroud)
你有你的代码的方式,分配head要head->next和调用Delete上head->next,