顺序存储结构的基本操作实现(以类的方式实现)----插入、删除、查询
2017-11-23 15:06
561 查看
之前在博客里也写过顺序存储结构的基本操作,这里主要用类来实现:
代码如下:
1.arraylist.h 头文件
#pragma once
#include <iostream>
class arrayList
{
private:
int len, size;
int* data;
public:
arrayList (int input_size) //构造函数
{
size = input_size;
len = 0;
data = new int[size]; // 创建该容量的数组
}
~arrayList()
{
delete []data;
}
bool insert (int pos, int val, arrayList *array); //插入
bool deletea (int val, arrayList *array);//删除
int search (int val);// 查找
void print (arrayList *array); //打印
//void initialize(arrayList *array);//初始化
};
2.arraylist.cpp
#include "arrayList.h";
#include <iostream>
using namespace std;
bool arrayList::insert (int pos, int val, arrayList *array) // pos 从1 算起
{
// 判断插入位置是否在length之后,或者容量已满, 或者pos小于1
if(pos > size || pos<1 )
{
cout << "插入的位置不正确" << endl;
return false;
}
else
{
for(int num = len+1; num >= pos-1; num--)
data[num+1] = data[num];
data[pos-1] = val;
len ++;
cout << "插入成功" << endl;
return true;
}
}
void arrayList::print (arrayList *array)
{
for (int num = 0; num < len; num++)
cout << data[num] << endl;
}
/*void arrayList::initialize(arrayList *array)
{
cout << "请输入初始化元素,其数目小于等于" << size << endl;
int val ;
int num = 0;
while(num<size )
{
cin >> val ;
data[num] = val;
num ++;
}
if(num == size)
cout << "输入个数超出容量" << endl;
}*/
bool arrayList::deletea (int val, arrayList *array)//当第一次出现该值时,删除它
{
int loc = search(val);
if(loc == 0)
cout <<"删除的值不存在" << endl;
else
{
for(int num = loc; num<len ; num++)
data[num] = data[num+1];
cout << "删除成功" << endl;
len--;
}
return 0;
}
int arrayList::search (int val) //寻找值,返回该值的位置
{
int num = 0;
while(num < len )
{
if(data[num] == val)
{
cout << "找到该值,位置为" << num+1 << endl ;
return num ;
}
else
num++;
}
if(num == len)
cout <<"没有找到该值" << endl;
return 0;
}
测试文件:
#include<iostream>
#include "arrayList.h"
using namespace std;
int main ()
{
arrayList arr(5); // 使用类中的构造函数
arr.insert(1, 1,&arr);
arr.insert(2, 2,&arr);
arr.insert(3, 3,&arr);
arr.insert(4, 4,&arr); //正常插入
//arr.insert(3, 7,&arr);
//arr.print(&arr);
//arr.search (8);
arr.deletea(3, &arr);
arr.print(&arr);
system("pause");
return 0;
}
代码如下:
1.arraylist.h 头文件
#pragma once
#include <iostream>
class arrayList
{
private:
int len, size;
int* data;
public:
arrayList (int input_size) //构造函数
{
size = input_size;
len = 0;
data = new int[size]; // 创建该容量的数组
}
~arrayList()
{
delete []data;
}
bool insert (int pos, int val, arrayList *array); //插入
bool deletea (int val, arrayList *array);//删除
int search (int val);// 查找
void print (arrayList *array); //打印
//void initialize(arrayList *array);//初始化
};
2.arraylist.cpp
#include "arrayList.h";
#include <iostream>
using namespace std;
bool arrayList::insert (int pos, int val, arrayList *array) // pos 从1 算起
{
// 判断插入位置是否在length之后,或者容量已满, 或者pos小于1
if(pos > size || pos<1 )
{
cout << "插入的位置不正确" << endl;
return false;
}
else
{
for(int num = len+1; num >= pos-1; num--)
data[num+1] = data[num];
data[pos-1] = val;
len ++;
cout << "插入成功" << endl;
return true;
}
}
void arrayList::print (arrayList *array)
{
for (int num = 0; num < len; num++)
cout << data[num] << endl;
}
/*void arrayList::initialize(arrayList *array)
{
cout << "请输入初始化元素,其数目小于等于" << size << endl;
int val ;
int num = 0;
while(num<size )
{
cin >> val ;
data[num] = val;
num ++;
}
if(num == size)
cout << "输入个数超出容量" << endl;
}*/
bool arrayList::deletea (int val, arrayList *array)//当第一次出现该值时,删除它
{
int loc = search(val);
if(loc == 0)
cout <<"删除的值不存在" << endl;
else
{
for(int num = loc; num<len ; num++)
data[num] = data[num+1];
cout << "删除成功" << endl;
len--;
}
return 0;
}
int arrayList::search (int val) //寻找值,返回该值的位置
{
int num = 0;
while(num < len )
{
if(data[num] == val)
{
cout << "找到该值,位置为" << num+1 << endl ;
return num ;
}
else
num++;
}
if(num == len)
cout <<"没有找到该值" << endl;
return 0;
}
测试文件:
#include<iostream>
#include "arrayList.h"
using namespace std;
int main ()
{
arrayList arr(5); // 使用类中的构造函数
arr.insert(1, 1,&arr);
arr.insert(2, 2,&arr);
arr.insert(3, 3,&arr);
arr.insert(4, 4,&arr); //正常插入
//arr.insert(3, 7,&arr);
//arr.print(&arr);
//arr.search (8);
arr.deletea(3, &arr);
arr.print(&arr);
system("pause");
return 0;
}
相关文章推荐
- 编程实现顺序存储结构和链式存储结构线性表的建立、查找、插入、删除等基本操作
- 试用多态实现线性表(队列,串,堆栈),要求具备线性表的基本操作:插入,删除,测长等。
- C语言实现双链表基本操作(创建、查找、插入、删除)
- 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表
- c语言:顺序表的实现(一) 创建,插入,删除,查找,输出等基本操作实现
- jsp操作MySQL实现查询、插入与删除功能(query、insert、delete)
- 二叉查找树的查找、插入、删除、释放等基本操作的实现(C语言)
- C语言实现顺序表的插入、删除、查找、遍历等基本操作
- PHP实现对文本数据库的数据显示、加入、修改、删除、查询五大基本操作的方法
- 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表
- 线性表的基本操作:插入、删除、查找等操作在顺序存储结构和链接存储结构上的算法
- 笔试题:创建一个单链表,结点包含学生的学号,姓名,性别,年龄信息.写几个程序,实现按学生学号插入,查询,删除等操作.
- HBase的Java接口基本操作:创建表插入查询删除
- 第一次实现最基本的MVC架构--登录注册查询删除基本操作
- 关于链表结构的基本操作 c 实现 (创建,插入删除,反转,合并链表,查找,是否有环,链表相交情况)
- C语言实现链表的创建、增加、删除、查询、逆序、清空等基本操作
- csdn 在c++ builder中,使用treeview实现对xml文档增加删除修改和查询等基本操作
- 链表(单双链表)用法与基本操作(构建、查找、插入、删除)实现
- 实现函数功能对数组元素进行插入、删除、查询操作
- JDBC实现数据库的几种基本操作(查询,分页查询,根据关键字进行查询以及插入数据)