【数据结构】线性表之顺序表

0x01 定义

线性表的顺序存储结构是指用一段地址连续的存储单元依次存储线性表的数据元素

0x02 顺序表之获取指定元素

#define MAXSIZE 20
typedef int ElemType;
typedef struct{
  ElemType data[MAXSIZE];
  int length;
}SqList;

int GetElem(SqList L, int i, ElemType *e){
    if(L.length ==0 || i < 0 || i > L.length) return 0;
    *e = L.data[i - 1];
    return 1;
}

0x03 顺序表之插入元素

  • 插入算法思路
    如果插入位置不在最后一个,则从最后一个元素向前遍历到要插入的位置,将它们向后挪一个位置,将要插入的位置插入到指定位置,并将长度加一。
#define MAXSIZE 20
typedef int ElemType;
typedef struct{
  ElemType data[MAXSIZE];
  int length;
}SqList;

int InsertElem(SqList *L, int i, Elem *e){
  if(i <= L->length){
    for(int j = L->length - 1; j < i; j--){
      L->data[j + 1] = L->data[j];  
    }
    L->data[i - 1] = *e;
    L->length ++;
  }
}

0x04 顺序表之删除操作

  • 删除思路
    取出要删除的元素,遍历该位置到最后一个位置,元素向前提一位,数组长度减一。
#define MAXSIZE 20
typedef int ElemType;
typedef struct{
  ElemType data[MAXSIZE];
  int length;
}SqList;

int deleteElem(SqList *L, int i, int *e){
  *e = L->data[i - 1];
  for(int j = i; j < L->length; j++){
    L->data[j - 1] = L->data[j];
  }
  L-length --;
}

你可能感兴趣的:(【数据结构】线性表之顺序表)