zoukankan      html  css  js  c++  java
  • 一个简单顺序表的C++实现

    /* SList.cpp
        Author: Qiang Xiao
        Time: 2015-07-11
    */
    #include<iostream>
    using namespace std;
    
    const int MAX_LENGTH= 20;
    
    class SList{
        private:
          int max_len;
            int arr[MAX_LENGTH];
          int len;
        public:
          SList(int a[], int len);
          bool append(int);
          bool insert(int, int);
          void sort();
          void swap(int*, int*);
          int getMax();
          int getMin();
          int getLength() const;
          void print();
          bool pop();
          bool remove(int); 
    };
    
    SList::SList(int a[], int leni){
        this->max_len= MAX_LENGTH;
    
        if(leni< this->max_len+ 1) {
        for(int i= 0; i< leni; i++){
            arr[i]= a[i];
        }
        this->len= leni;
        }
        else
        cout<<"Create Failed!"<<endl;
    }
    
    bool SList::pop(){
        if(this->len< 1){
        cout<<"Out of range!"<<endl;
        return false;
        }
        this->arr[len-1]= 0;
        this->len--;
        return true;
    }
    
    bool SList::remove(int pos){
        if(pos< 0 || pos> this->len-1){
        cout<<"Out of range!"<<endl;
        return false;
        }
        for(int i= pos; i< this->len; i++){
        this->arr[i]= this->arr[i+1];
        }
        this->arr[this->len-1]= 0;
        this->len--;
    }
    
    int SList::getLength() const{
        return this->len;
    }
    
    int SList::getMax() {
        this->sort();
        return this->arr[this->len-1];
    }
    
    int SList::getMin() {
        this->sort();
        return this->arr[0];
    }
    
    void SList::swap(int* i, int* j){
        int tmp= *i;
        *i= *j;
        *j= tmp;
    }
    
    bool SList::insert(int pos, int elem){
        if(this->len< this->max_len){
          if(pos< 0 || pos> this->max_len || this->len> this->max_len- 1){
              cout<<"Out of range."<<endl;
              return false;
          }
        for(int i= this->len; i> pos; i--){
            this->arr[i]= this->arr[i- 1];
        }
        this->arr[pos]= elem;
        this->len++;
        return true;
        }
    }
    bool SList::append(int elem){ if(this->len< this->max_len){   this->arr[this->len]= elem;   len++;   return true; } return false; } void SList::sort(){ for(int i= 0; i< this->len; i++){ int min= i; for(int j= i; j< this->len; j++){ if(this->arr[j]< this->arr[min]){ min= j; } } this->swap(&this->arr[min], &this->arr[i]); } this->print(); cout<<endl; } void SList::print(){ for(int i= 0; i< this->len; i++){ cout<<arr[i]<<" "; if((i+1)%5== 0) cout<<endl; } } int main(){ cout<<"*****************TEST BEGIN*****************"<<endl; int a[]= {1,10,3,4,9, 11}; int len= sizeof(a)/sizeof(a[0]); SList* s= new SList(a, len); s->print(); cout<<" ******************************************"<<endl; int item= 30; s->append(item); s->print(); cout<<" ******************************************"<<endl; int newi= 3000; int pos= 3; s->insert(pos, newi); s->print(); cout<<" ************After Sort********************"<<endl; s->sort(); cout<<" ************MAX, MIN & LENGTH*************"<<endl; cout<<"MAX: "<<s->getMax()<<", MIN: "<<s->getMin()<<", LENGTH: "<<s->getLength()<<endl; cout<<" *******************POP********************"<<endl; s->pop(); s->print(); cout<<" *****************TEST END*****************"<<endl; return 0; }

    欢迎交流!

  • 相关阅读:
    java集合 stream 相关用法(1)
    ICE新手入门版
    spring中关于FeignClient的错误 QueryParam.value() was empty on parameter 1
    Java Base64解析
    Java RSA加密以及验签
    项目拆分子工程(简单版)
    mysql "ON DUPLICATE KEY UPDATE" 的使用
    关于多定时任务开发
    AtomicInteger保证线程安全的全局变量
    C++矩阵库 Eigen 快速入门
  • 原文地址:https://www.cnblogs.com/ruchicyan/p/4638602.html
Copyright © 2011-2022 走看看