线性表

线性表及其应用

1.1 线性表的逻辑结构

线性表(Linear list):由n个数据元素(结点)a1,a2,…,an组成的有序序列。其中数据元素n定义为表的长度。

线性表逻辑特征:

  1. 在非空的线性表中,有且仅有一个开始节点,它没有直接前驱,有且仅有一个直接后继a2。
  2. 有且仅有一个终端节点,它没有直接后继,而有且仅有一个直接前驱a(n-1).
  3. 其余的内部节点ai都有且仅有一个直接前驱和直接后继
  4. 线性表是一种典型的线性结构(一对一)

1.2线性表的存储结构

1.2.1顺序存储结构

顺序存储结构定义

用一组地址连续的存储单元,使得线性表中在逻辑结构中相邻的数据元素存储在相邻的物理存储中。采用这个方式存储的线性表称为顺序表

顺序存储结构的C语言定义:
    #define maxsize=100;//线性表可达的最大长度
    typedef int Elemtype;
    typedef struct
    {
        Elemtype elem[maxsize];
        int last;/*记录线性表中最后一个元素在elem中的下标值,空表置为1*/

    }SeqList;
基本运算
  1. 查找运算

    查找分为按序号查找按内容查找,按序号查找结果是**L.elem[i-1];按内容查找代码如下。

    int locate(SeqList L,Elemtype e)
    {
        int i=0;
        while((i<=L.last)&&l.elem[i]!=e)
        {
            i++;
        }
        if(i<=L.last) return i;
        else return -1;
    }
  1. 插入运算

    线性表插入是指在含有n个元素的线性表中的第i个位置前插入一个元素,变成长度n+1的线性表。

    int insert(SeqList *L,int i,Elemtype e)
    /*位置i,第i-1个元素,数组下标i-1*/
    {
        int k;
        if(i>L->last+1||i<1)
        {
            printf("插入位置不合理");
            return -1;
        }
        if(L.last=Maxsize-1)
        {
            printf("线性表已经满了");
            return -1;
        }
        for(k=L.last;k>=i-1;k--)
        {
            L->elem[k+1]=L->elem[k];
        }
        L->elem[i]=e;
        L->last++;
        return 1;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值