欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据结构———顺序表的查找、删除、和插入

程序员文章站 2022-03-22 19:21:33
...

查找:            假设有7个元素
1,定义顺序表的结构体
2。与顺序表的元素一一比较、若一致,则返回位置,不一致,返回0.

# define maxsize 100

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

int find(Sqlist L;int e)
{
    int i;
    for(i=0;i<length;++i)
    {
        if(e==L.data[i]);
        return i;
    }
    return 0;
}

插入(插入有序的顺序表):1。定义顺序表 2。找到某个元素的位置 3.把位置以后的元素全部向后移动一位  4。把新元素插入位置 5.顺序表的长度+1

# define maxsize 100

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

int find(Sqlist L,int e)
{
    int i;
    for(i=0;i<length;++i)
    {
        if(e<L.data[i]);
        return i;
    }
    return i;//如果没有找到,因为++i 所以返回后面的一个位置
}

int sertelem(Sqlist & L,int i,int e)//i是位置,e是元素
{
    if(i<0||i>L.length+1||L.length>maxsize)
        //位置存在不合理或者顺序表长度大于宏定义的常量
    {
        printf("ERROR!\n");
        return 0;
    }
    int j;
    for(j=length-1;j>=p,--i)
    {
        L.data[j+1]=L.data[j];
    }
    L.data[p]=e;
    ++(L.length);
    return 1;
}

 

删除:1.定义顺序表结构 2.把位置后面的元素前移 3。顺序表的长度-1

# define maxsize 100

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

int delelem(Sqlist & L,int i,int & e)//i是位置,e是元素
{
    if(i<0||i>L.length-1||L.length>maxsize)//注意这个i>L.length-1是因为不能删除尾元素
        //位置存在不合理或者顺序表长度大于宏定义的常量
    {
        printf("ERROR!\n");
        return 0;
    }
    int j;
    e=L.data[p];
    for(j=p;j<L.length-1,++i)  //这里的j<L.length-1是要保证最后一个前移元素的位置(length-1)在长度范围内
    {
        L.data[j]=L.data[j+1];
    }
    --(L.length);
    return 1;
}

完美     顺序表的操作是++i;--i