题解 | #牛牛的链表删除#
牛牛的链表删除
https://www.nowcoder.com/practice/d3df844baa8a4c139e103ca1b1faae0f
#include <iostream>
using namespace std;
struct list{
int data;
list *next;
};
list* createlist()
{
list *head = (list*)malloc(sizeof(list));
head->next = NULL;
return head;
}
void addnode(list* head,int data)
{
list *newnode = (list*)malloc(sizeof(list));
newnode->data = data;
newnode->next = NULL;
list *temp;
for(temp = head;temp->next!=NULL;temp = temp->next);
temp->next = newnode;
}
void deletenode(list *head,int n)
{
list *temp = head;
if(temp->next == NULL)
{
cout<<"no node";
}
else if((temp->next->next == NULL) && (temp->next->data == n))
{
temp->next = NULL;
}
else
{
list *temp1 ;
for(temp1 = temp->next;temp1!=NULL;)
{
if(temp1->data == n)
{
temp->next = temp1->next;
temp1 = temp1->next;
}
else {
temp = temp->next;
temp1 = temp1->next;
}
}
}
}
int main() {
int n;
cin>>n;
int deletenum;
cin>>deletenum;
int arr[10] = {0};
for(int i=0;i<n;i++)
{
cin>>arr[i];
}
list* head = createlist();
for(int j=0;j<n;j++)
{
addnode(head,arr[j]);
}
deletenode(head, deletenum);
list *temp = head;
while(temp->next!=NULL)
{
cout<<temp->next->data<<" ";
temp = temp->next;
}
return 0;
}
// 64 位输出请用 printf("%lld")


