《大话数据结构》学习笔记(三)

来源:互联网 发布:caffe windows github 编辑:程序博客网 时间:2024/05/21 09:38

1、线性表 有限序列 前驱 后继 空表 位序
2、线性表操作 重置为空表 位序得到元素 查找元素 线性表长度 插入和删除元素 其他操作可由基本操作组合而成
3、线性表存储 顺序存储 起始位置 最大容量 当前长度 数组长度 地址
4、LOC(ai) = LOC(a1) + (i - 1) * c 线性表顺序存储存取时间性能O(1) 随机存储结构
5、顺序存储 插入 删除 时间复杂度O(n)
6、复习c语言中的*与&,真忘了,都记反了 https://zhidao.baidu.com/question/394894243.html
7、线性表顺序存储 无逻辑关系存储开销 快速存取 但插入删除开销大 长度变化时 存储空间难确定 存储碎片

部分代码:

#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define MAXSIZE 20typedef int ElemType;typedef struct{    ElemType data[MAXSIZE];    int length;}SqList;typedef int Status;Status GetElem(SqList L, int i, ElemType *e){    if (L.length==0 || i<1 || i>L.length)        return ERROR;    *e =  L.data[i-1];    return OK;}//自定义int ListLength(SqList L){    return L.length;}//自定义,光想怎么把GetElem()用上了,写了个奇葩实现int LocateElem(SqList L, ElemType e){    int i;    for(i=1; i<=L.length; i++)    {        ElemType *eTemp = NULL;        if(GetElem(L, i, eTemp))        {            if(e == *eTemp)                return i;        }        else            printf ("Error!\n");    }    //abnomal return value    return L.length+1;}//常规思路实现int LocateElem1(SqList L, ElemType e){    int i;    for(i=1; i<=L.length; i++)    {        if(e == L.data[i])            return i;    }    //abnomal return value    return L.length+1;}Status ListInsert(SqList *L, int i, ElemType e){    int k;    if(L->length == MAXSIZE)        return ERROR;    if(i<1 || i>L->length+1)        return ERROR;    if(i <= L->length)    {        for(k=L->length-1; k>=i-1; k--)            L->data[k+1] = L->data[k];    }    L->data[i-1] = e;    L->length++;    return OK;}Status ListDelete(SqList *L, int i, ElemType *e){    int k;    if(L->length == 0)        return ERROR;    if(i<1 || i>L->length)        return ERROR;    *e = L->data[i-1];    if(i<L->length)    {        for(k=i; k<L->length; k++)            L->data[k-1] = L->data[k];    }    L->length--;    return OK;}void unionL(SqList *La, SqList Lb){    int La_len, Lb_len, i;    ElemType e;    La_len = ListLength(*La);    Lb_len = ListLength(Lb);    for(i=1; i<=Lb_len; i++)    {        GetElem(Lb, i, &e);        if(!LocateElem(*La, e))            ListInsert(La, ++La_len, e);    }}
原创粉丝点击