数据结构---顺序表(C++)

顺序表

  • 是用一段地址连续的存储单元依次存储线性表的数据元素。
  • 通常用一维数组来实现

基本操作:

  • 初始化
  • 销毁
  • 求长
  • 按位查找
  • 按值查找
  • 插入元素
  • 删除位置i的元素
  • 判空操作
  • 遍历操作

示例代码:


//声明.h
const int MAXSIZE = 100;

template<typename dataType>
class SeqList {
public:
    SeqList();      //无参构造
    SeqList(dataType a[], int length);  //有参构造
    ~SeqList();    
    int seqlist_Length();
    dataType get_i(int i);     //查找第i位的元素
    int search_x(dataType x);   //查找值为x的元素
    void insert_x(int n, dataType x);   //在第n位插入值位x的元素
    dataType delete_i(int i);    //删除第i位元素
    void print_list();
private:
    dataType data_[MAXSIZE];
    int length_;
};
//定义.h
#include<iostream>
using std::cout;
using std::endl;

template<typename dataType>
inline SeqList<dataType>::SeqList()
{
    length_ = 0;
}

template<typename dataType>
inline SeqList<dataType>::SeqList(dataType a[], int length)
{
    if (length > MAXSIZE)
    {
        throw"长度非法";
    }
    for (int i = 0; i < length; ++i)
    {
        data_[i] = a[i];
    }
    length_ = length;
}

template<typename dataType>
inline SeqList<dataType>::~SeqList()
{}

template<typename dataType>
inline int SeqList<dataType>::seqlist_Length()
{
    return length_;
}

template<typename dataType>
inline dataType SeqList<dataType>::get_i(int i)
{
    if (i > length_ || i < 1)
    {
        throw"查找位置不存在";
    }
    else
    {
        return data_[i - 1];
    }

}

template<typename dataType>
inline int SeqList<dataType>::search_x(dataType x)
{

    for (int i = 0; i < length_; ++i)
    {
        if (data_[i] == x)
        {
            return i + 1;
        }
    }
    return 0;
}

template<typename dataType>
inline void SeqList<dataType>::insert_x(int n, dataType x)
{
    if (length_ == MAXSIZE)
    {
        throw"表已满";
    }
    if (n >= length_ + 1 || n<1)
    {
        throw"插入位置非法";
    }
    for (int i = length_; i >= n; i--)
    {
        data_[i] = data_[i - 1];
    }
    data_[n - 1] = x;
    ++length_;
}

template<typename dataType>
inline dataType SeqList<dataType>::delete_i(int i)
{
    if (length_ == 0)
    {
        throw"表为空";
    }

    if (i<1 || i>length_)
    {
        throw"删除位置非法";
    }
    int x = data_[i - 1];
    for (int j = i; j < length_; j++)
    {
        data_[j - 1] = data_[j];
    }
    length_--;
    return x;
}

template<typename dataType>
inline void SeqList<dataType>::print_list()
{
    for (int i = 0; i < length_; i++)
    {
        cout << data_[i];
    }
    cout << endl;
}
//main.cpp
#include"announced.h"

int main()
{
    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

posted @ 2015-10-22 16:48  kelion  阅读(496)  评论(0编辑  收藏  举报