• 设计一个算法双链表删除重复


    typedef struct node{
    struct node *next,*pre;
    int data;
    } DSLink;
    void intiDSLink(DSLink *&L,int *a,int l){
    
            //创建头结点
            L=(DSLink*)malloc(sizeof(DSLink));
            L->next=L->pre=NULL;
            DSLink *s,*pre;
            //创建结点
            for(int i=0;i<l;i++){
                    //头插法
                    s=(DSLink*)malloc(sizeof(DSLink));//申请内存空间
                    s->data=a[i];//赋值
                    s->pre=L;//该结点的前指针指向前结点
                    s->next=L->next;//后指针指向前结点的后结点
                    L->next=s;//后结点
            }
            DSLink *next=L->next,*t=L->next;
    
            //输出
            while(next!=NULL){
                    cout<<next->data<<" ";
                    next=next->next;
            }
            //删除重复 并且销毁
            next=L->next;
            pre=L;
            while(next!=NULL){
                    if(pre->data==next->data){
                            //删除相等元素
                            pre->next=next->next;
                            next->next->pre=pre;
                            cout<<"删除"<<next->data<<" ";
                            //释放结点
                            free(next);
                            next=pre->next;
                    }else{
                            pre=next;
                            next=next->next;
                    }
            }
            //输出
            DSLink *n=t;
            while(n!=NULL){
                    cout<<n->data<<" ";
                    n=n->next;
            }
    
    
    }

     

  • 相关阅读:
    隐藏 阴影 定位 js语法与导入
    js 相关知识
    选择器 常用样式 布局
    前端
    数据库 备份
    SQLAlchemy 创建 增 删 改 查
    引擎 索引 日志查询 权限管理
    pysql
    数据库的操作
    Conv1*1
  • 原文地址:https://www.cnblogs.com/webcyh/p/11359852.html
Copyright © 2020-2023  润新知