顺序表
1、什么是顺序存储结构?什么是顺序表?
答:用一组地址连续的存储空间依次存放线性表的各元素
    采用顺序存储结构的线性表称为顺序表(一维数组)
2、顺序表的语言描述,一定要理解其中的含义。
1)静态语言描述
    typedef struct node
{ EelemType  data[maxsize];
      int    length;
    }sqlist;                                         
sqlist  l;
2)动态语言描述
  typedef struct node
{ EelemType  *elem;
  int    length;
}sqlist;                                         
sqlist  l; 
l.elem=(ElemType*)malloc(Maxsize*sizeof(ElemType))
3、顺序表的插入、思想、时间复杂度o(n)、理解算法中每条语句的含义。
  1)插入的条件:不管是静态实现还是动态实现,插入的过程都是从最后一个元素往后挪动,腾位置。静态是利用数组实现,动态是利用指针实现。不管静态还是动态,在表中第i个位置插入,移动次数都是n-i+1
  2)静态实现插入算法(位置是1-length+1合法)
    void InsertList(SeqList *L,DataType x,int i)
{
int j;
if(i<1||i>L->length+1)
  Error("position error");  //非法位置,退出
if(L->length>=ListSize)
  Error("overflow");     //表空间溢出
for(j=L->length-1;j>=i-1;j--)
  L->data[j+1]=L->data[j];  //从最后一个结点开始往后移
L->data[i-1]=x;        //插入x
L->length++;                  //表长加1
}
3)动态实现插入算法(位置是1-length+1合法)
status Listinsert_sq(sqlist &L,int i,elemtype e)
{if(i<1||i>L.length+1) return error;
if(L.length>=L.listsize)
{newbase=(elemtype* )
realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(elemtype));
if(!newbase) exit(orerflow);
L.elem=newbase;
L.listsize+=LISTINCREMENT;
}
q=&(L.elem[i-1]);
for(p=&(L.elem[L.length-1]);p>=q;--p)
  *(p+1)=*p;
*q=e;
++l.length;
return OK;}
4、顺序表的删除、思想、时间复杂度o(n)、理解算法中每条语句的含义。 
delete删除表格还是内容1)删除的条件:不管是静态实现还是动态实现,删除的过程都是从被删元素的下一位置向前挪动。静态是利用数组实现,动态是利用指针实现。不管静态还是动态,删除表中第i个元素,移动次数都是n-i
  2)静态实现删除算法(位置是1-length合法)
  void DeleteList(Seqlist  *L,int i)
{
int j;
if(i<1||i>L->length)
  Error("position error");
for(j=i;j<=L->length-1;j++)
  L->data[j-1]=L->data[j];
  L->length--;
}
3)动态实现删除算法(位置是1-length合法)
status Listdelete_sq(sqlist &L,int i,elemtype &e)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。