顺序表的插入,删除与查找的实现

Posted swefii

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了顺序表的插入,删除与查找的实现相关的知识,希望对你有一定的参考价值。

插入与删除:

#include <stdio.h>
#define MaxSize 10    
typedef struct {
    int data[MaxSize];
    int length;
}SqList;

bool ListInsert(SqList &L, int i, int e) {
    if (i<1 || i>L.length + 1)        //判断i的范围是否有效
        return false;
    if (L.length >= MaxSize)        //存储空间已满
        return false;
    for (int j = L.length; j >= i; j--)    //元素依次后移
        L.data[j] = L.data[j - 1];
    L.data[i - 1] = e;
    L.length++;
    return true;
}

bool ListDelete(SqList &L, int i, int &e) {
    if (i<1 || i>L.length)
        return false;
    e = L.data[i - 1];
    for (int j = i; j < L.length; j++)        //后边元素依次前移
        L.data[j - 1] = L.data[j];
    L.length--;
    return true;
}

int main() {
    SqList L;
    InitList(L);
    //...插入几个元素,代码省略
    ListInsert(L, 3, 3);    //在第三个位置插入值为3的元素

    int e = -1;        //用e把删除的元素带回来
    if (ListDelete(L, 3, e))
        printf("已删除第3个元素,删除元素值为=%d
", e);
    else
        printf("位序i不合法,删除失败
");
    return 0;
}

 

静态定义与动态定义的按位查找都一样:

ElemType GetElem(SqList L, int i) {
    return L.data[i - 1];    

 

按值查找:

//在顺序表L中查找第一个元素值等于e的元素,并返回其位序 
int LocateElem(SeqList L,int e){ 
    for(int i=0;i<L.length;i++) 
        if(L.data[i]==e)        //返回位序
            return i+1;            //查找失败
    return 0; 
}

 

以上是关于顺序表的插入,删除与查找的实现的主要内容,如果未能解决你的问题,请参考以下文章

顺序表的插入,删除与查找的实现

如何用JAVA语言建立含有若干个元素的顺序表,并实现插入,删除,查找等基本操作

用C语言实现线性表的顺序存储(创建,插入,删除和查找)

数据结构——线性表

用java写个顺序表插入算法的实现?

数据结构实验:线性表的顺序表示和链式表示及插入、删除、查找运算