C++ 資料結構與演算法(一)線性表之順序表

來源:互聯網
上載者:User

Seqlist.h:

const int DefaultSize = 100;template <class T>class SeqList{public:    SeqList(int sz = DefaultSize)        :m_nmaxsize(sz),m_ncurrentsize(-1)    {//初始化順序表        if(sz > 0)        {            m_element = new T[m_nmaxsize];        }    }    ~SeqList()    {        delete[] m_element;    }    int Length() const;////擷取順序表長度    int Find(T x) const;//找到元素 x 的位置    int IsElement(T x) const; //順序表中是否存在元素x    int Insert(T x,int i);//插入元素x    int Delete(T x);//刪除元素x    int IsEmpty() const;//判斷順序表是否為空白    int IsFull() const;//判斷順序表是否滿    T GetElement(int i);//擷取第i個元素    void Print();private:    T* m_element;    const int m_nmaxsize;    int m_ncurrentsize;};template<class T>int SeqList<T>::Length() const{    return m_ncurrentsize + 1;}template<class T>int SeqList<T>::Find(T x) const{    for(int i = 0 ;i < m_ncurrentsize; i++)    {        if(m_element[i] == x)            return i;    }    cout << "沒有找到你想要的元素" << endl;    return -1;}template<class T>int SeqList<T>::IsElement(T x) const{    if(Find(x) == -1)        return 0;    else        return 1;}template<class T>int SeqList<T>::Insert(T x, int i){    if(i < 0 || i > m_ncurrentsize + 1 || m_ncurrentsize == m_nmaxsize - 1)    {        cout << "非法操作" << endl;        return 0;    }    m_ncurrentsize ++;    for(int j = m_ncurrentsize; j >i; j --)    {        m_element[j] = m_element[j-1];    }    m_element[i] = x;    return 1;}template<class T>int SeqList<T>::Delete(T x){    int nsize = m_ncurrentsize;    for(int i = 0; i< m_ncurrentsize; i++)    {        if(m_element[i] == x)        {            for(int j = i; j < m_ncurrentsize; j ++)            {                m_element[j] = m_element[j+1];            }            m_ncurrentsize --;            continue;        }    }    if(nsize = m_ncurrentsize)    {        cout << "沒有找到你想要刪除的元素" << endl;        return 0;    }    return 1;}template<class T>int SeqList<T>::IsFull() const{    return m_ncurrentsize == m_nmaxsize -1;}template<class T>T SeqList<T>::GetElement(int i){    if(i < 0 || i > m_nmaxsize)    {        cout << "非法操作" << endl;        return 0;    }    return m_element[i];}template<class T>void SeqList<T>::Print(){    for(int i = 0 ;i <= m_ncurrentsize;i ++)    {        cout << i + 1 << ":\t" << m_element[i] << endl;    }    }

test.cpp

// test.cpp : 定義控制台應用程式的進入點。//#include "stdafx.h"#include "Seqlist.h"#include<iostream>using namespace std;int _tmain(int argc, _TCHAR* argv[]){    SeqList<int> list;        int a[15] = {4,8,8,2,9,1,7,6,4,3,2,9,11,7,9};    for(int i = 0; i< 15 ;i ++)    {        list.Insert(a[i],i);    }    list.Print();    cin.get();    return 0;}

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.