zoukankan      html  css  js  c++  java
  • 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 */
  • 相关阅读:
    删除链表的倒数第N个节点
    SVN快速入门(TSVN)
    C# HttpWebRequest提交数据方式浅析
    简单的3个SQL视图搞定所有SqlServer数据库字典
    简单统计SQLSERVER用户数据表大小(包括记录总数和空间占用情况)
    详细讲解Android对自己的应用代码进行混淆加密防止反编译
    PHP之网络编程
    PHP之ThinkPHP模板标签操作
    PHP之ThinkPHP数据操作CURD
    关于数组的取极值和排序
  • 原文地址:https://www.cnblogs.com/ycbeginner/p/9996022.html
Copyright © 2011-2022 走看看