zoukankan      html  css  js  c++  java
  • 数据结构

    注意

    线性表是有限序列。

    基本操作

    initList(&L);
    Destroy(&L);//并且释放L所占用内存空间
    LocateElem(L,e);
    GetELem(L,i);
    ListInsert(&L,i,e);//前插
    ListDelete(&L,i&e);
    

    申请线性表

    //静态
    typedef struct
    {
        ElemType data[MaxSize];
        int length;
    }SqList;
    
    //动态
    typedef struct
    {
        ElemType *data;//需要动态申请空间,否则仅仅是一个地址
        int length;
    }SqList;
    
    C L.data=(Elemtype*)malloc(sizeof(ElemType)*initSize);
    C++ L.date=new ElemType[InitSize];
    
    //i:顺序表的标号,不是数组
    //顺序表:连续存放、不能有间隔 1-n
    bool ListInsert(SqList &L,i,ElemType e)
    {
        if(i<1||i>L.length+1)
            return false;
        if(L.length>=MaxSize)//是否有空间能够让我们insert
            return false;
        for(int j=L.length;j>=i;j--)
            L.data[j]=L.data[j-1];//往后移一位
        L.data[i-1]=e;
        L.length++;
        return true;
    }
    //尾部进行插入
    //最好:1最坏:n平均:n
    
    bool ListDelete(Sq,int i,ElemType &e)
    {
        if(i<1||i>L.length)
            return false;
        e=L.data[i-1];//返回删除值
        for(int j=i;j<L.length;j++)
            L.data[j-1]=L.data[j];
        L.length--;
        return true;
    }
    
    int locateElem(SqList L,EleType e)
    {
        int i;
        for(int i=0;i<L.length;i++)
        {
            if(L.data[i]==e)
                return i+1;
        }
        return 0;//说明顺序表中没有该值
    }
    

    线性表的链式存储:单链表 不一定连续的
    通过指针实现线性逻辑关系
    单链表:数据域+指针域

    typedef struct LNode
    {
        Elemtype data;
        struct LNode *next;
    }LNode,*LinkList;
    
  • 相关阅读:
    能量最小化初探,graphcuts能量最小化调用
    【设计】B 端产品设计
    【产品分析】关于字节跳动的神话与现实
    【UI】数据表格设计
    【设计】交互文档结构
    【作品集】UX作品集
    【产品方法论】需求是怎么来的
    【ML】人脸识别
    【ML】DL的参数量计算
    【网站部署】flask
  • 原文地址:https://www.cnblogs.com/OFSHK/p/13660009.html
Copyright © 2011-2022 走看看