数据结构学习笔记(2)----线性表

顺序存储结构

1. 定义 :一段地址连续的存储单元一次存储线性表的数据元素
2. 代码块

最先需要定义的

#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define MAXSIZE 20
typedef int ElemType;
typedef struct
{
  ElemType date[MAXSIZE];//这是数据长度
  int length;//这是线性表长度
}SqList;

date为存储数据所开辟的空间,即是通过数组来实现地址连续的存储,即顺序存储。
length是线性表的长度,为线性表中数据元素的个数,即data中已存放的数据。

地址计算方法…省略

3. 操作

1.获得元素操作

typedef int Status;
Status GetElem(SqList L,int i,ElemType *e)//用ElemType*类型是因为为了与表中data相同类型
{
 if(i<1||i>L.length||L.length==0)//小于1连第一个元素都不是,大于元素数据长度则没有可以返回的数据元素,若Length=0则表示没有数据元素,为空表
 return ERROR;
 *e = L.data[i-1];
 return OK;
}

2.插入操作

实现在第i个数据元素前插入数据元素

Status ListInsert(SqList *L,int i,ElemType e)
{
  int k;
  if(L->length==MAXSIZE)//线性表满了
  return ERROR;
  if(i<1||i>L->length+1)//当i不在范围
  return ERROR;
  if(i<=L->length)
  {
    for(k=L->length-1;k>=i-1;k--)//将第i个元素包括它自己往后移动一位
    {
     L->data[k+1] = L->data[k];
    }
  }
  L->data[i-1]=e;//插入新元素
  L->length++;
return OK;
}

3.删除操作

Status ListDelete(SqList *L,int i,ElemType *e)//e用来返回删除数据的值
{
  int k;
  if(L->length==0)//空表
  return ERROR;
  if(i<1||i>L->length)//i不在范围
  return ERROR;
  *e = L->data[i-1];
  if(i<L->length)
  {
   for(k=i-1;k<L->length-1;k++)//书上写的是(k=i;k<L->length)开心就好
   {
     L->data[k]=L->data[k+1];
   }
  }
  L->length--;
  return OK;
}

如果是删除最后一个数据元素的话,没有相应的操作,那我觉得可能是通过length这个数值来进行线性表的运用。

还有更多的操作,在以后实践中用吧

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值