为了加深大家对C++的理解,我们还是继续通过实践的方式,今天,我们一起写一个顺序表,具体代码如下。
Seqlist.h具体内容如下:
const int DefaultSize = 100; template <typename Type> class SeqList{ public: SeqList(int sz = DefaultSize) :m_nmaxsize(sz), m_ncurrentsize(-1){ if (sz > 0){ m_elements = new Type[m_nmaxsize]; } } ~SeqList(){ delete[] m_elements; } int Length() const{ //get the length return m_ncurrentsize + 1; } int Find(Type x) const; //find the position of x int IsElement(Type x) const; //is it in the list int Insert(Type x, int i); //insert data int Remove(Type x); //delete data int IsEmpty(){ return m_ncurrentsize == -1; } int IsFull(){ return m_ncurrentsize == m_nmaxsize - 1; } Type Get(int i){ //get the ith data return i<0 || i>m_ncurrentsize ? (cout << "can't find the element" << endl, 0) : m_elements[i]; } void Print(); private: Type *m_elements; const int m_nmaxsize; int m_ncurrentsize; }; template <typename Type> int SeqList<Type>::Find(Type x) const{ for (int i = 0; i < m_ncurrentsize; i++) if (m_elements[i] == x) return i; cout << "can't find the element you want to find" << endl; return -1; } template <typename Type> int SeqList<Type>::IsElement(Type x) const{ if (Find(x) == -1) return 0; return 1; } template <typename Type> int SeqList<Type>::Insert(Type x, int i){ if (i<0 || i>m_ncurrentsize + 1 || m_ncurrentsize == m_nmaxsize - 1){ cout << "the operate is illegal" << endl; return 0; } m_ncurrentsize++; for (int j = m_ncurrentsize; j > i; j--){ m_elements[j] = m_elements[j - 1]; } m_elements[i] = x; return 1; } template <typename Type> int SeqList<Type>::Remove(Type x){ int size = m_ncurrentsize; for (int i = 0; i < m_ncurrentsize;){ if (m_elements[i] == x){ for (int j = i; j < m_ncurrentsize; j++){ m_elements[j] = m_elements[j + 1]; } m_ncurrentsize--; continue; } i++; } if (size == m_ncurrentsize){ cout << "can't find the element you want to remove" << endl; return 0; } return 1; } template <typename Type> void SeqList<Type>::Print(){ for (int i = 0; i <= m_ncurrentsize; i++) cout << i + 1 << ":\t" << m_elements[i] << endl; cout << endl << endl; }
main.cpp内容如下:
#include <iostream> #include "SeqList.h" using namespace std; int main() { SeqList<int> test(15); int array[15] = { 2, 5, 8, 1, 9, 9, 7, 6, 4, 3, 2, 9, 7, 7, 9 }; for (int i = 0; i < 15; i++){ test.Insert(array[i], 0); } test.Insert(1, 0); cout << (test.Find(0) ? "can't be found " : "Be found ") << 0 << endl << endl; test.Remove(7); test.Print(); test.Remove(9); test.Print(); test.Remove(0); test.Print(); cin.get(); return 0; }
运行效果如图1所示:
图1 运行效果
原文链接: https://www.cnblogs.com/new0801/p/6176930.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/145600
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!