已知长度为n的线性表A采用顺序存储结构,请写一个时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法可删除线性表中所有值为item的数据元素。

#include 

using namespace std;

//顺序表的存储结构
#define MAXSIZE 100    //顺序表可能达到的最大长度
typedef int ElemType;  //自定义数据元素类型

typedef struct
{
    ElemType *elem;    //存储空间的基地址
    int length;        //当前长度,数据元素的个数
}SqList;               //顺序表的结构类型为SqList

//初始化,构造一个空的顺序表L,并输入数据
void InitList(SqList &L)
{
    int len;
    L.elem = new ElemType[MAXSIZE];   //为顺序表分配一个大小为MAXSIZE的数组空间
    if(!L.elem)
    {
        cout << "Error" << endl;
        return;
    }

    cout << "Please input the length of the linear table:" ;
    cin >> len;
    L.length = len;
    cout << "Please input the elements of the linear table:";
    for(int i=0;i<len;i++)
        cin >> L.elem[i];
}

//删除值为item的元素
void ListDelete(SqList &L,int item)
{
    int j = 0;
    for(int i=0; i<L.length;i++)
    {
        if(L.elem[i] != item)
        {
            L.elem[j] = L.elem[i];
            j++;
        }
    }
    L.length = j;
}

int main()
{
    SqList L;
    int item;
    InitList(L);
    cout << "Please input the value of item is:";
    cin >> item;
    ListDelete(L,item);

    cout << "After Deletion:" << endl;
    for(int i=0;i<L.length;i++)
        cout << L.elem[i] << " ";

    return 0;
}

你可能感兴趣的:(已知长度为n的线性表A采用顺序存储结构,请写一个时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法可删除线性表中所有值为item的数据元素。)