• C++ 顺序表 代码实现


    线性表存储在计算机中可以采用多种方式,以下是按照顺序存储方式实现:

    优点:查找很方便

    缺点:插入元素、删除元素比较麻烦,时间复杂度 O(n)

     1 #ifndef SeqList_h
     2 #define SeqList_h
     3 #include <iostream>
     4 using namespace std;
     5 const int MAXSIZE = 1000;
     6 template <class T>
     7 class SeqList{
     8 public:
     9     SeqList(){length = 0;}  //初始化
    10     SeqList(const T a[], int n); //初始化
    11     int GetLength(){return length;}  //获取长度
    12     void PrintList();  //打印
    13     void Insert(int i, T x);  //插入
    14     T Delete(int i); //删除
    15     T Get(int i);  //获取
    16     int Locate(T x);  //按值查找
    17 private:
    18     int length;
    19     T data [MAXSIZE];
    20     
    21 };
    22 template <class T>
    23 SeqList<T>::SeqList(const T a[], int n){
    24     if(n>MAXSIZE){
    25         throw "数组长度超过顺序表的最大长度";
    26     }
    27     for(int i = 0;i<n;i++){
    28         data[i] = a[i];
    29     }
    30     length = n;
    31 }
    32 template <class T>
    33 void SeqList<T>::PrintList(){
    34     cout<<"按序号依次遍历线性表中的各个数据元素:"<<endl;
    35     for(int i = 0;i<length;i++){
    36         cout << data[i] <<" ";
    37     }
    38     cout << endl;
    39 }
    40 template <class T>
    41 void SeqList<T>::Insert(int i, T x){
    42     if(length>MAXSIZE) throw "上溢异常";
    43     if(i<0 || i>length-1) throw "位置异常";
    44     for(int j = length; j>=i; j--){
    45         data[j] = data[j-1];
    46     }
    47     data[i-1] = x;
    48     length ++;
    49 }
    50 template <class T>
    51 T SeqList<T>::Delete(int i){
    52     if(length == 0) throw "下溢异常";
    53     if(i<1 || i>length){
    54         throw "位置异常";
    55     }
    56     T x = data[i-1];
    57     for(int j = i-1;j<length-1;j++){
    58         data[j]= data[j+1];
    59     }
    60     length --;
    61     return x;
    62 }
    63 template <class T>
    64 T SeqList<T>::Get(int i){
    65     if(0 == length) throw"上溢异常";
    66     if(i<1 || i>length){
    67         throw "查找位置非法";
    68     }
    69     return data[i-1];
    70 }
    71 template <class T>
    72 int SeqList<T>::Locate(const T x){
    73     for(int i = 0;i<length;i++){
    74         if(x == data[i])
    75             return i+1;
    76     }
    77     return 0;
    78 }
    79 #endif /* SeqList_h */
  • 相关阅读:
    logging模块-logging.basicConfig、logger.setLevel、handler.setLevel优先级
    Python标准模块--logging(转载)
    第三节,入门知识和windows系统安装python环境
    第二节windows系统下Xshell 5软件远程访问虚拟机 Linux系统
    第一节windows系统安装虚拟机VMware 软件
    数学数列
    java String
    linux eclipse 报错过时的方法
    java.util.Random 类
    java uitl
  • 原文地址:https://www.cnblogs.com/ycbeginner/p/9996022.html
Copyright © 2020-2023  润新知