链表


插入链表:  利用尾插法,搞一个变量表示最后一个元素就行了。// 针对单个链表的可以,但是其他的,就不行,我的评价不如 链式前向星。

插入和删除看代码,注意特判空链表和head。

#include 
using namespace std;
#define ri register int 
#define M 100005

template <class G> void read(G &x)
{
    x=0;int f=0;char ch=getchar();
    while(ch<'0'||ch>'9'){f|=ch=='-';ch=getchar();}
    while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}
    x=f?-x:x;
    return ;
}
struct dian{
    int val;
    dian *next;
    dian(int a)
    {
        val=a;next=nullptr;
    }
};

int n;
int main(){
    
    read(n);
    dian *head=new dian(2);
    dian *p=head;
    for(ri i=1;i<=n;i++)
    {
        int a;cin>>a;
       dian *q=new dian(a);
       p->next=q;
       p=q;
    }
    p=head;
    while(p!=nullptr)
    {
        printf("%d ",p->val);
        p=p->next;
    }
    printf("\n");
    p=head;
    while(head->val==2)
    {  
       
        dian *q=head;
        head=head->next;
        delete q;
    }
    while(p->next!=nullptr)
    {
        if(p->next->val==2)
        {
            dian *q=p->next;
            p->next=p->next->next;
            delete q;
        }
        p=p->next;
    }
    p=head;
    while(p!=nullptr)
    {
        printf("%d ",p->val);
        p=p->next;
    }
    return 0;
    
}

相关