• 链表模板


    #include<iostream>
    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    typedef struct Lnode
    {
        int data;
        Lnode *next;
    } Lnode,*linklist;
    void creat_h(linklist &L) //头插法
    {
        linklist s;
        int n,tmp;
        L=(linklist)malloc(sizeof(Lnode));
        L->next=NULL;
        scanf("%d",&n);
        for (int i=1; i<=n; i++)
        {
            scanf("%d",&tmp);
            s=(linklist)malloc(sizeof(Lnode));//新建立一个节点
            s->data=tmp;
            s->next=L->next;//相当于把新的节点的下一个节点指向前面一个节点的地址
            L->next=s;//再把这个节点更新
        }
    }
    void creat_w(linklist &L) //尾插法
    {
        linklist p,q;
        int n,tmp;
        L=(linklist)malloc(sizeof(Lnode));
        L->next=NULL;
        p=L;
        scanf("%d",&n);
        for (int i=1; i<=n; i++)
        {
            scanf("%d",&tmp);
            q=(linklist)malloc(sizeof(Lnode));
            q->data=tmp;
            q->next=NULL;
            p->next=q;//把p指向下一个节点
            p=q;//更新这个节点
        }
        p->next=NULL;
    }
    void print(linklist head)
    {
        linklist p=head->next;//由于第一个节点为空,需要把第一个节点排除
        while(p!=NULL)
        {
            printf("%d ",p->data);
            p=p->next;
        }
        printf("
    ");
    }
    void delete_list(linklist head,int w)
    {
        linklist p=head,q;//删除的话要从空节点开始连接这样不会漏掉第一个节点
        while(p!=NULL){
             q=p->next;
             if(q!=NULL && q->data==w){
                    p->next=q->next;
                    free(q);//释放空间
             }else
             p=p->next;
        }
    }
    void insert_list(linklist head,int pos,int w){
        int s=0;//插入到pos位置计数位置需要从0开始,因为插入删除要从前面一个节点,第一个节点的前一个节点是第一个头节点
        linklist p=head,q,tmp;
        while(p!=NULL)
        {
            s++;
            if (s==pos){
               tmp=p->next;
               q=(linklist)malloc(sizeof(Lnode));
               q->data=w;
               p->next=q;
               p=q;
               q->next=tmp;
            }else
            p=p->next;
        }
    }
    int main()
    {
        int n;
        linklist a;
        creat_w(a);print(a);
        delete_list(a,1);//删除值为1的节点
        print(a);
        insert_list(a,1,1000);//插入在1位置,节点值为1000的节点
        print(a);
        return 0;
    }
    有不懂欢迎咨询 QQ:1326487164(添加时记得备注)
  • 相关阅读:
    Swagger入门
    UOS
    Java多线程
    英语语法小知识-Unit1
    MVVM
    Vue入门
    Mybatis入门
    Python pip install
    js 触发LinkButton点击事件,执行后台方法
    ajax 请求 ascx
  • 原文地址:https://www.cnblogs.com/bluefly-hrbust/p/10165432.html
Copyright © 2020-2023  润新知