顺序表

作者: 低吟浅唱1990 | 来源:发表于2017-04-10 16:54 被阅读8次

    计算机内部存储一张线性表,最为方便的就是一组连续的内存单元来存储整张线性表。这种顺序存储结构下的线性表就叫顺序表

    线性表的数据对象集合为{a1,a2,....an},每个元素的类型都一样。其中除第一个元素a1外,每一个元素有且只有一个直接前驱元素,除了最后一个元素an外,每个元素有且只有一个直接后继元素。数据元素之间的关系是一对一的关系。

    <li>有一个唯一的表名来标识该顺序表
    <li>内存单元连续存储,也就是说,一张顺序表要占据一块连续的内存空间。
    <li>数据顺序存放,元素之间有先后关系


    向顺序表中插入元素。
    在长度为n的顺序表中的第i个位置插入新的元素,是指在顺序表第i-1和第i个数据之间插入一个新元素item
    A(a1,a2,...,ai-1,ai,...an) -----A(a1,a2,...,ai-1,item,ai,...an)

    删除一个元素
    A(a1,a2,...,ai-1,ai,ai+1,...an) -----A(a1,a2,...,ai-1,ai+1,...an)

    <pre>
    #include<stdio.h>
    #define MaxSize 10
    //插入顺序表
    void insertElem(int Sqlist[],int len,int i,int x)
    {
    int t;
    if(
    len==MaxSize || i<1 || i>len+1){
    printf("This insert is illegal\n");
    return;
    }
    for(t=
    len-1;t>=i-1;t--){
    // printf("%d-->%d\n",t,Sqlist[t]);
    Sqlist[t+1] = Sqlist[t];
    }
    Sqlist[i-1] = x;
    *len = len+1;
    }
    //删除
    void DeElem(int Sqlist[],int len,int i){
    int j;
    if(i<1 || i>
    len+1){
    printf("This Delete is illegal ");
    return;
    }
    for(j=i;j<
    len;j++){
    printf("de-->%d---->%d\n",j,Sqlist[j]);
    Sqlist[j-1] = Sqlist[j];
    }
    *len = *len-1;
    }</pre>

    <pre>
    int main(void) {
    int Sqlist[MaxSize],int len, int i;
    for(i=0;i<6;i++){scanf("%d ",&Sqlist[i]);}
    len = 6;
    for(i=0;i<len;i++){printf("%d ",Sqlist[i]); }
    printf("shengyu length is %d\n",MaxSize-len);
    insertElem(Sqlist,&len,3,0);
    for(i=0;i<len;i++){
    printf("%d ",Sqlist[i]);
    }
    printf("shengyu length is %d\n",MaxSize-len);
    DeElem(Sqlist,&len,5);
    for(i=0;i<len;i++){
    printf("%d ",Sqlist[i]);
    }
    printf("shengyu length is %d\n",MaxSize-len);
    return 0;
    }

    相关文章

      网友评论

          本文标题:顺序表

          本文链接:https://www.haomeiwen.com/subject/jipsattx.html