stl用多了好久没手写链表了,写着玩玩

#include <iostream>

using namespace std;

struct node{
    int val;
    node*next = nullptr;
};

int main()
{
    int n = 0;
    while(cin>>n)//n值
    {
       //创建头节点
        node*head = new node;

        //加入第一个节点
        {
            int temp = 0;
            cin>>temp;
            node*first = new node;
            first->val=temp;
            head->next=first;
        }

        //加入后续节点
        for(int i = 0;i<n-1;i++)
        {
            int value;//要加入节点的值
            int father;//父节点的值

            cin>>value>>father;

            //找到要插入的位置
            node*search=head->next;
            while(search)
            {
                if(search->val==father)
                {
                    node*son=new node;
                    son->val=value;
                    son->next=search->next;
                    search->next=son;
                    break;
                }
                search=search->next;
            }

        }

        //删除指定值
        {
            int del;
            cin>>del;
            node*search=head->next;
            while(search)
            {
                if(search->val==del)
                {
                    if(search->next)
                    {
                        search->val=search->next->val;
                        node*temp=search->next;
                        search->next=search->next->next;
                        delete temp;
                    }
                }
                search=search->next;
            }
        }


        //打印链表
        {
            node* search=head->next;
            while(search)
            {
                cout<<search->val<<" ";
                search=search->next;
            }
            cout<<endl;
        }

        //释放所有
        node* search=head;
        while(search)
        {
            head=head->next;
            delete search;
            search = head;
        }
    }

    return 0;
}