数据结构总结笔记1

一,线性表

线性表是具有相同特征元素的一个有限序列,某个结点前后的结点称为该结点的前趋和后继。

线性表有顺序存储结构和链式存储结构。

1,顺序存储结构

特点:顺序存储结构占用一片连续的内存空间;依次存放;元素类型相同;随机存取。

下面介绍线性表顺序存储结构的相关操作

a顺序存储结构的表示

#define MAXSIZE 100
typedef struct{
int a[100];
int length;
}Sqlist;

b顺序表的取值(获取第i个位置的元素)

int GetElem(Sqlist L,int i,Elemtype &e)
if(i<1||i>L.length){
return ERROR;}
e=L.elem[i-1];
return OK;
}

当需要获取元素时,首先判断获取位置是否合理。若不合理则返回error,若合理则将下标为i-1的元素赋值给e,此时获取完成,返回ok,代码结束。

c顺序表的查找

int LocateElem(Sqlist L,ElemType e){
  for(i=0;i<L.length;i++){
    if(L.elem[i]==e){
      return i+1;}
    else{
      return 0;
  }}}

先利用for循环对顺序表元素进行遍历,若成功找到e则返回i+1,即逻辑位次,否则返回0,表示查找失败,代码结束。

d顺序表的插入

代码的答题思路如下,首先确定插入元素的位置,然后判断插入元素位置是否合法,再判断顺序表存储空间是否已满,若已满则返回error,然后用for循环将从第n位到第i位的元素依次向后移动一格,为新插入的元素腾出空间,然后新插入的元素放到第i个位置,最后将表长加一,插入完成,代码结束。

Status ListInsert_Sq(SqList &L,int i,ElemType e){
  if(i<1||i>L.length+1) return ERROR;
  if(L.length==MAXSIZE) return ERROR;
    for(int j=L.length-1;j>=i-1;j--){//注意物理位次
      L.length[j+1]=L.length[j];
    }
    L.length[i-1]=e;
    L.length++;
    return OK;}

e顺序表的删除

代码的大致思路与插入大致相同,首先判断删除位置是否合法,然后将想要删除的元素保留在e中,然后利用for循环将第i+1个元素到第n个元素全部向前移动一位,最后表长减一,删除成功返回OK,代码结束。

Status ListDelete_Sq(SqList &L,int i){
  if(i<1||i>L.length+1) return ERROR;
  e=L.elem[i-1];
  for(int j=i;j<L.length-1;j++)
    L.elem[j-1]=L.elem[j];
  L.length--;
  return OK;

总结:顺序存储结构查找方便但是插入删除麻烦。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值