全心思齐网

C++数据结构,写一种算法,从顺序表删除第i个元素开始的第k个元素?

#include <cstring>

#include <cassert>

#include <iostream>

using namespace std;

//定义的顺序表类

template <class T>

class SqList

{

private:

static const int MAX;

int count;

T data[MAX];

public:

SqList()

:count(0)

{

}

T& get(int idx)

{

assert(idx >= 0 && idx < count);

return data[idx];

}

SqList<T>& insert(int idx, T elem)

{

assert(count < MAX);

assert(idx >= 0 && idx <= count);

int i;

int j;

for(i = count - 1; i >=idx; i--)

data[i + 1] = data[i];

data[idx] = elem;

++count;

return *this;

}

T remove(int idx) //删除下标为idx的元素

{

assert(idx >=0 && idx < count);

int i;

int j;

T elem = data[idx];

for(i = idx; i < count - 1; i++)

data[i] = data[i + 1];

--count;

return elem;

}

T remove(int i, int k) //删除从下标i开始的第k个元素

{

return remove(i + k - 1);

}

SqList<T>& push(T elem)

{

return insert(count, elem);

}

SqList<T>& operator <<(T elem)

{

return push(elem);

}

T& operator[] (int idx)

{

return get(idx);

}

int capacity() const

{

return count;

}

void output() const

{

int i;

for(i = 0; i < count; i++)

cout << data[i] << " " << endl;

cout << endl;

}

};

template <class T>

const int SqList<T>::MAX = 20;

int main()

{

SqList<int> sq;

sq << 2 << 3 << 4 << 5;

sq.output();

sq.insert(1, 11);

sq.output();

cout << "删除了: " << sq.remove(1,3) << endl;

sq.output();

return 0;

}

匿名回答于2024-05-25 17:21:57


相关知识问答