码迷,mamicode.com
首页 > 编程语言 > 详细

C++顺序表

时间:2015-09-25 21:35:38      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:

SeqList:

#ifndef SEQLIST_H_
#define SEQLIST_H_

const int Size = 100;

template<typename Type>
class SeqList
{
private:
    Type *m_elements;
    const int m_maxsize;
    int m_currentsize;
public:
    SeqList(int sz=Size):m_maxsize(sz),m_currentsize(-1)
    {
        if(sz>0)
            m_elements = new Type[m_maxsize];
    }
    ~SeqList() {delete[] m_elements;}
    int Length() const {return m_currentsize+1;}     //get the length
    int Find(Type x) const;                          //find the position of x 
    int IsElement(Type x) const;                     //is x in the list
    int Insert(Type x,int i);                        //insert x
    int Remove(Type x);                              //delete x
    int IsEmpty() {return m_currentsize==-1;}
    int Isfull() {return m_currentsize == m_maxsize-1;}
    Type get(int i) 
    {
        return i<0 || i>m_maxsize?(cout<<"can‘t find the element"<<endl,0):m_element[i];
    }
    void Print();
};

template<typename Type> int SeqList<Type>::Find(Type x) const
{
    for(int i=0;i<m_currentsize;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_currentsize+1 || m_currentsize == m_maxsize -1)
    {
        cout<<"the operate is illegal!"<<endl;
        return 0;
    }
    m_currentsize++;
    for(int j=m_currentsize;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 count = m_currentsize;
    for(int i=0;i<m_currentsize;)
    {
        if(m_elements[i]==x)
        {
            for(int j=i;j<m_currentsize;j++)
                m_elements[j] = m_elements[j+1];
            m_currentsize--;
            continue;
        }
        i++;
    }
    if(count == m_currentsize)
    {
        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_currentsize+1;i++)
        cout<<i+1<<":\t"<<m_elements[i]<<endl;
    cout<<endl;
}

#endif

Test:

#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.Print();
    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();

    return 0;
}

 

C++顺序表

标签:

原文地址:http://www.cnblogs.com/jx-yangbo/p/4839366.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!