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

查找:            假设有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<L.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<L.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=L.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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值