一个简单顺序表的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]<<"\t";
    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<<"\n******************************************"<<endl;
    int item= 30;
    s->append(item);
    s->print();
    cout<<"\n******************************************"<<endl;
    int newi= 3000;
    int pos= 3;
    s->insert(pos, newi);
    s->print();
    cout<<"\n************After Sort********************"<<endl;
    s->sort();
    cout<<"\n************MAX, MIN & LENGTH*************"<<endl;
    cout<<"MAX: "<<s->getMax()<<", MIN: "<<s->getMin()<<", LENGTH: "<<s->getLength()<<endl;
    cout<<"\n*******************POP********************"<<endl;
    s->pop();
    s->print();

    cout<<"\n*****************TEST END*****************"<<endl;

    return 0;

}

欢迎交流!

时间: 2024-10-12 03:15:57

一个简单顺序表的C++实现的相关文章

一个简单顺序表的基本操作

#include <stdio.h>#include <stdlib.h>#define Max_Size 100 /*线性表可能达到的最大长度*/typedef int DataType;typedef struct List{ DataType data[Max_Size]; /*用于存放数据元素数组 */ int length; /* 当前表长度*/}SeqList; void InitList (SeqList &L){ L.length=0;} int Loc

JQuery中一个简单的表单验证的实例

html代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv=&quo

jquery 一个简单的表单验证实例

表单验证在网站开发过程中经常遇到,我们可以使用服务器端语言验证,也可以使用客户端语言来验证.本文章向大家介绍jquery客户端验证表单的一个简单实例.实例仅作参考. <body> <form method="post" action=""> <div class="int"> <label for="username">用户名:</label> <!-- 为每个

简单顺序表的插入,删除,指定位置,指定元素的插入删除操作

头文件 SeqList.h #ifndef __SEQLIST_H__ #define __SEQLIST_H__ #include<stdio.h> #include<string.h> #include<assert.h> #define MAX_SIZE 10 typedef int DataType; typedef unsigned int size_t; typedef struct SeqList { DataType array[MAX_SIZE]; s

IDEA插件开发(一)一个简单的表单demo

?? 版本信息: ?? JDK:1.8+ ?? IDEA:2019.3 ?? 插件项目基于gradle构建. ?? 知识背景:swing ?? 参考文档: http://www.jetbrains.org/intellij/sdk/docs/tutorials/build_system/prerequisites.html http://www.jetbrains.org/intellij/sdk/docs/user_interface_components/tool_windows.html

AngularJs的一个简单的表单验证

最近学习了AngularJs框架,觉得确实特别有用.之前学习了一点点的ASP.NET,它的控件也是挺好的,不过还是没有AngularJs轻巧. 定义一个应用程序myApp,一个控制器.接着是表单的验证. AngularJs中,表单控件的HTML元素有:input select button textarea元素 其实还算是很简单的例子. 不过我觉得对比起ASP那种庞大的控件来说,它确实很轻巧. AngularJS 输入验证$dirty 表单有填写记录$valid 字段内容合法的$invalid

实现一个简单的表单排序

<!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>Cities</title> </head> <body> <table id="tableTest&q

数据结构关于简单顺序表的构建(C++)

//使用结构体构造线性表typedef struct SeqList { ElemType *elem; size_t capacity; size_t size; }SeqList; //使用模板类来构造线性表const int DefaultSize = 100; template<typename Type> class SeqList { public: SeqList(int sz = DefaultSize):m_nmaxsize(sz),m_ncurrentsize(-1) {

一个完整顺序表的实现

[linearlist.h]: 1 #include<iostream> 2 using namespace std; 3 template <class T> 4 class Linearlist 5 { 6 public: 7 virtual bool IsEmpty() const = 0; 8 virtual int Length() const = 0; 9 virtual bool Find(int i, T& x)const = 0; 10 virtual i