一个简单顺序表的C++实现
/* SList.cpp
Author: Qiang Xiao
Time: 2015-07-11
*/
#include<iostream>
using namespace std; const int MAX_LENGTH= ; 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+ ) {
for(int i= ; i< leni; i++){
arr[i]= a[i];
}
this->len= leni;
}
else
cout<<"Create Failed!"<<endl;
} bool SList::pop(){
if(this->len< ){
cout<<"Out of range!"<<endl;
return false;
}
this->arr[len-]= ;
this->len--;
return true;
} bool SList::remove(int pos){
if(pos< || pos> this->len-){
cout<<"Out of range!"<<endl;
return false;
}
for(int i= pos; i< this->len; i++){
this->arr[i]= this->arr[i+];
}
this->arr[this->len-]= ;
this->len--;
} int SList::getLength() const{
return this->len;
} int SList::getMax() {
this->sort();
return this->arr[this->len-];
} int SList::getMin() {
this->sort();
return this->arr[];
} 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< || pos> this->max_len || this->len> this->max_len- ){
cout<<"Out of range."<<endl;
return false;
}
for(int i= this->len; i> pos; i--){
this->arr[i]= this->arr[i- ];
}
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= ; 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= ; i< this->len; i++){
cout<<arr[i]<<"\t";
if((i+)%== )
cout<<endl;
}
} int main(){
cout<<"*****************TEST BEGIN*****************"<<endl;
int a[]= {,,,,, };
int len= sizeof(a)/sizeof(a[]);
SList* s= new SList(a, len);
s->print();
cout<<"\n******************************************"<<endl;
int item= ;
s->append(item);
s->print();
cout<<"\n******************************************"<<endl;
int newi= ;
int pos= ;
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 ; }
欢迎交流!
一个简单顺序表的C++实现的更多相关文章
- [deviceone开发]-一个简单的表单示例
一.简介 这个例子我们用do_ScrollView+do_LinearLayout来实现,当没有输入相关的值而去保存的时候,则把隐藏的几个提示Label显示出来,然后调用do_LinearLayout ...
- JQuery中一个简单的表单验证的实例
html代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://w ...
- IDEA插件开发(一)一个简单的表单demo
- [MySQL5.6] 一个简单的optimizer_trace示例
[MySQL5.6] 一个简单的optimizer_trace示例 前面已经介绍了如何使用和配置MySQL5.6中optimizer_trace(点击博客),本篇我们以一个相对简单的例子来跟踪op ...
- 【java学习】Servlet简单的表单程序(一)
此文用于java学习,在此小记. 在此小Demo中使用到了Servlet,所以有必要了解一下Servlet的相关知识.(Servlet的相关知识摘抄自http://blog.csdn.net/jiuq ...
- 数据结构——Java实现顺序表
一.分析 什么是顺序表?顺序表是指用一组地址连续的存储单元依次存储各个元素,使得在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中的线性表.一个标准的顺序表需要实现以下基本操作: 1.初始化顺序表 ...
- [WPF自定义控件库]简单的表单布局控件
1. WPF布局一个表单 <Grid Width="400" HorizontalAlignment="Center" VerticalAlignment ...
- [数据结构]C#顺序表的实现
在数据结构的学习当中,想必C++可能是大家接触最多的入门语言了 但是C#的数据结构却很少看到,今天我写了一个C#顺序表的顺序存储结构 顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是 ...
- 【C语言--数据结构】线性顺序表
线性表的本质: 1.线性表(List)是零个或者多个数据元素的集合: 2.线性表中的数据元素之间是有顺序的: 3.线性表中的数据元素个数是有限的: 4.线性表中的数据元素的类型必须相同: 定义: 线性 ...
随机推荐
- 解决Qt程序发布时中文乱码问题(通过QApplication.addLibraryPath加载QTextCodec插件)
Qt程序的文字编码,是通过插件来解决的,所以我们发布的时候需要把相应的插件也发布出去,在开发者电脑上程序会自动从插件目录加载到插件,但是如果发布给别的电脑使用,需要手动指定插件路径,如下所示: int ...
- 在非gui线程使用QMessageBox
最近我写项目的时候遇到一个奇怪的需求,要在工作线程内,根据某个情况弹出一个MessageBox 但是Qt提供的MessageBox只可以在gui线程(主线程)使用,于是我就对QMessageBox封装 ...
- 今天在发布IIS站点的时候遇到了一些问题
1.HTTP 错误 500.23 - Internal Server Error 检测到在集成的托管管道模式下不适用的 ASP.NET 设置. 分析:一般5XX的错误都是服务器的问题,这里把应用程序池 ...
- svn 问题汇总
1.当删除了原来的仓库时,再次新建,更新版本时会出现这个问题:
- Rikka with Graph(联通图取边,暴力)
Rikka with Graph Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- Wet Shark and Flowers(思维)
C. Wet Shark and Flowers time limit per test 2 seconds memory limit per test 256 megabytes input sta ...
- Canvas路径、描边、填充
<script> var context = document.getElementById('canvas').getContext('2d'); context.font = '48p ...
- sql server 2005中没有等于等于,高手自行跳过。。
set ANSI_NULLS ONset QUOTED_IDENTIFIER ONgo ALTER TRIGGER [qiandaoTrigger] ON [dbo].[bbsQianDao] AFT ...
- Spring中注入List,Set,Map,Properties的xml文件配置方法
下面的例子展示了如何注入 List – <list/> Set – <set/> Map – <map/> Properties – <props/> ...
- 我的学习笔记之API-Guides翻译------AppComponent_Activites
10.26第一天开始:贵在坚持,边看遍整理 一个应用程序通常由多个Activity组成,它们之间是松耦合的关系.特别的,有一个Activity作为app的主Activity,当app首次启动时呈现给用 ...