线性表相关操作

(考研参考)

1.结构体定义


typedef struct
{
     int data[Maxsize];
     int length;
}Sqlist;

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

2.初始化线性表


void initList(Sqlist &L)
{
     L.length=0;
}

3.习题进入--已知一个顺序表L,其中元素递增有序排列,设计一个算法,插入一个元素x(x为int型)后保持该顺序表仍然递增排列(假设插入操作总能成功)


/*查找线性表的某个元素,返回所在的位置*/
int findElem(Sqlist &L,int x)
{
     int i;
     for(i=0;i<L.length;i++)
         if(L.data[i]==x) return i;
     return i;//找不到返回L.length,至于为什么这么写,主要是便利插入某个元素定位
}
/*插入某个位置的元素*/
void insertElem(Sqlist &L,int x)
{
     int p,i;
     p=findElem(L,x);
     for(i=L.length-1;i>=p;i--)  //元素后移,腾出p位置的空
         L.data[i+1]=L.data[i];
     L.data[p]=x;
     ++(L.length);//表的长度加一
}

3.按元素值查找算法


int findElem(Sqlist &L,int x)
{
     int i;
     for(i=0;i<L.length;i++)
         if(L.data[i]==x) return i;
     return -1; // -1表示没有查找到
}

4.插入数据的算法


在顺序表的第0<=p<=L.length中插入一个新的元素e,如果p的输入不正确,则返回0,代表插入失败;如果p的输入正确,将顺序表第p个元素以及后元素右移一位,
腾出一个空间来插入一个新的元素,顺序表长度加一,操作成功,返回1.
int insertElem(Sqlist &L,int p,int e)
{
     int i;
     if(p<0||p>L.length) return 0;
     for(i=L.length-1;i>=p;--i)
         L.data[i+1]=L.data[i];
     L.data[p]=e;
     ++(L.length);//顺序表长度+1
     return 1;

}

5.习题进入--删除顺序表L中下标为p(0<=p<=length-1)的元素,成功返回1,失败返回0 ,并将删除的元素赋值给e;


void deleteElem(Sqlist &L,int p,int &e)
{
     int i;
     if(p<0||p>L.length-1) return 0;
     e=L.data[p];
     for(i=p;i<L.length-1;i++)
         L.data[i]=L.data[i+1];
     --(L.length);
     return 1;
    
}

6.求指定位置的元素算法


用e返回指定位置p(0<=p<=L.length-1)上的元素
int getElem(Sqlist &L,int p,int &e)
{
     if(p<0||p>L.length-1) return 0;
     e=L.data[p];
     return 1;
}

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄