数据结构线性表的顺序存储(纯代码)

数据结构线性表的顺序存储(纯代码)

#include
#include


#define maxsize 100
typedef int datatype;

//存储结构
typedef struct{
     
    datatype data[maxsize];
    int n;
}Seqlist;



//创建线性表
void InitList(Seqlist *L){
     
   L->n = 0;
}

//插入运算
int InsList(Seqlist *L,int i,datatype e)
{
     
    int k;
    printf("%d",L->n);
    if (L->n==maxsize)  /* 顺序线性表已经满 */
        return -1;
    if (i < 1 || i>L->n+1){
     /* 当i比第一位置小或者比最后一位置后一位置还要大时 */

        printf("插入失败!");
        return 0;
    }


    if (i <= L->n)        /* 若插入数据位置不在表尾 */
    {
     
        for(k=L->n-1;k>=i-1;k--)  /* 将要插入位置之后的数据元素向后移动一位 */
            L->data[k+1]=L->data[k];
    }
    L->data[i-1]=e;          /* 将新元素插入 */
    L->n++;
    printf("插入成功!");

    return 1;
}
//删除运算
int DelList(Seqlist *L,int i){
     
    int j;
    if(L->n==0){
     
        printf("表为空,不能删除!");
        return (-1);
    }
    if(i<1||i>L->n){
     
        printf("删除位置非法!");
        return (0);
    }
    for(j=i+1;j<=L->n;j++){
     
        L->data[j-2]=L->data[j-1];
    }
    L->n--;
    return (1);
}

//按值查找
int Locate(Seqlist *L,datatype x){
     
    int i;
    i=1;
    while(i<L->n&&L->data[i-1]!=x){
     
        i++;
    }
    printf("%d",i);
    printf("%d",L->n);
    if(i<=L->n){
     
        return i;
    }else{
     
        return (-1);
    }
}
int main(){
     
    Seqlist L;
    int i=0;
    //创建线性表
    InitList(&L);
    InsList(&L,1,12);
    InsList(&L,2,24);
    //插入数据(在位置7插入数字5)
//    InsList(&L,7,5);
    //安值查询
     i = Locate(&L,24);
     printf("%d\n",i);//--输出结果为7


    //插入数据(在位置9插入数字0)
//     InsList(&L,9,0);
//    //删除数据
//    int del = DelList(&L,9);
//    printf("%d\n",del);//成功为1
//     printf("%d\n",L.data[8]);//成功为1


}

你可能感兴趣的:(线性表,数据结构)