数据结构4

获得元素操作

实现GetElem的具体操作,即将线性表L中的第i个位置的元素值返回。(我们只需把数组第i-1下标的值返回即可)

define OK 1

define ERROR 0

define TRUE 1

define FALSE 0

typedef int Status;

//Status 是函数的类型,其值是函数结果状态代码,如OK等
//初始条件,顺序表L已存在,i <= i <= ListLength(L)
//操作结果,用e返回L中第i个数值

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

return OK;
}

插入操作

实现ListInsert(*L, i, e),即在线性表L中的第i个元素位置插入新元素e。

思路:

  • 如果插入位置不合理,抛出异常
  • 如果线性表的长度大于等于数组长度,则抛出异常或动态增加数组容量
  • 从最后一个y元素开始向前遍历到第i个位置m,分别d将它们都向后移动一个位置
  • 将要插入元素填入位置i处
  • 线性表长度j+1

//初始条件,顺序表L已存在,i <= i <= ListLength(L)
//操作结果,在L中第i个元素位置插入新元素e,L长度+1

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--)
{
L->data[k+1] = L->data[k];
}
}
L->data[i-1] = e; //如果在表尾直接插入
L->Length++;

return OK;
}

posted @ 2019-09-28 23:10  ZhouWei211  阅读(230)  评论(0)    收藏  举报