线性表

【什么是算法?】
空间复杂度S(n):根据算法写成的程序在执行时占用存储单元的长度。
时间复杂度T(n):根据算法写成的程序在执行时消耗的时间长度。
分析算法复杂度
Tworst(n):最坏情况复杂度
Tav(n):平均复杂度
【什么是线性表?】
“线性表(Linear List)”:由同类数据元素构成有序序列的线性结构
表中的元素个数称为线性表的长度,没有元素时称为空表,表的起始位置称为表头,结束位置称为表尾。
【线性表的顺序存储实现】

typedef struct Lnode *List;
struct Lnode {
          ElementType Data[MAXSIZE];
          int Last;     //线性表最后一个元素
};
struct LNode L;
List PtrL; //PtrL为指向结构体的指针 || struct Lnode * PtrL

访问下标为i的元素:L.Data[i]或者PtrL->Data[i]
线性表长度:L.Last+1或者PtrL->Last+1
【线性表的主要操作】
1、初始化(建立空的顺序表)

List MakeEmpty()
{
    List PtrL;
    PtrL=(List )malloc(sizeof(struct LNode));
    PtrL->Last=-1;
    return PtrL;
}

2、查找

/* 查找成功的平均比较次数是(n+1)/2
    平均时间性能是O(n) */
int Find()(ElementType X,List PtrL)
{
    int i=0;
    while(i<=PtrL->Last && PtrL->Data[i]!=X)
            i++;
     if(i>PtrL->Last)    return -1;
     else  return i;
}

3、插入

/* 第i个位置上插入一个值为x的新元素 */
void Insert(ElementType X, int i, List PtrL)
{
        /*MAXSIZE 数组大小*/
    if (PtrL->Last == MAXSIZE - 1) {
        printf("表满");
        return;
    }
    if (i<1 || i>PtrL->Last + 2) {
        printf("位置不合法");
        return;
    }
    for (j = PtrL->Last; j >= i - 1; j--)
        PtrL->Data[j + 1] = PtrL->Data[j];
    PtrL->Data[i - 1] = X;
    PtrL->Last++;
    return;
}

4、删除

/* 删除表的第i个位置上的元素 */
void Delete(int i, List PtrL)
{
    int j;
    if (i<1 || i>PtrL->Last + 1) {
        printf("不存在第%d个元素", i);
        return;
    }
    for (j = i; j <= PtrL->Last; j++)
        PtrL->Data[j - 1] = PtrL->Data[j];
    PtrL->Last--;
    return;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.线性表的定义 线性表:零个或多个数据元素的有限序列序列:也就是说元素之间是有顺序的,若元素存在多个,则第一个元...
    e40c669177be阅读 6,365评论 6 15
  • 3.2 线性表的定义 线性表,从名字上你就能感觉到,是具有像线一样的性质的表。 零个或多个数据元素的有限序列。 这...
    努力生活的西鱼阅读 4,498评论 0 1
  • 前言 上一篇《数据结构和算法之时间复杂度和空间复杂度》中介绍了时间复杂度的概念和常见的时间复杂度,并分别举例子进行...
    VV木公子阅读 9,846评论 2 26
  • 一.线性表 定义:零个或者多个元素的有限序列。也就是说它得满足以下几个条件:  ①该序列的数据元素是有限的。  ②...
    Geeks_Liu阅读 7,568评论 1 12
  • 从数据的逻辑结构来分,数据元素之间存在的关联关系被称为数据的逻辑结构。归纳起来,应用程序中的数据大致哟如下四种基本...
    Jack921阅读 4,635评论 0 2

友情链接更多精彩内容