顺序表(C++)
以下为数据结构中的顺序表实现代码,已测试能够运行。虽然说是C++版的,但是其实应该是C语言班的。C++应该是面向对象,用抽象方法实现,而以下代码是面向过程的,只是把C语言中的输入(scanf)和输出(printf)改为了cin和cout而已。如果想要改为C++版的,可以将各个函数变为类的成员函数,使用方法改为调用类的成员方法而已,没有什么特别的。
#include<iostream> #include<stdlib.h>//清屏操作的头文件 using namespace std; //主要操作的函数声明 void insert(int A[],int &length,int); int _delete(int A[],int &length,int n); int locate(int A[],int length,int n); int get(int A[],int length,int ); void create(int A[],int length); void show(int A[],int length); void main1(); int main(){ int action,A[100],length; char c; main1(); while(cin>>action){ if(action==1){ //创建 system("cls"); cout<<"please input the length:"<<endl; cin>>length; create(A,length); system("pause"); system("cls"); main1(); } else if(action==2){ //插入 system("cls"); cout<<"please input the integer:"<<endl; int n; cin>>n; insert(A,length,n); cout<<"OK! the number has been inserted!"<<endl; system("pause"); system("cls"); main1(); } else if(action==3){ //打印 system("cls"); show(A,length); system("pause"); system("cls"); main1(); } else if(action==4){ //获取 system("cls"); cout<<endl<<"please input the number's index you want to get:"<<endl; int n; cin>>n; int result=get(A,length,n); if(!result){ cout<<"wrong! can't find the number in the Array."<<endl; } else { cout<<"OK! find it! it's "<<result<<endl; } system("pause"); system("cls"); main1(); } else if(action==5){ //删除 system("cls"); cout<<endl<<"please input the number you want to delete:"<<endl; int n; cin>>n; int result=_delete(A,length,n); if(!result){ cout<<"wrong! can't find the number in the Arrar."<<endl; } else { cout<<"OK! the number has been deleted"<<endl; } system("pause"); system("cls"); main1(); } else if(action==6){ //定位 system("cls"); cout<<endl<<"please input the number you want to locate:"<<endl; int n; cin>>n; int result=locate(A,length,n); if(!result){ cout<<"wrong! can't find the number in the Array."<<endl; } else { cout<<"the index of "<<n<<" is "<<result<<endl; } system("pause"); system("cls"); main1(); } else { //退出 exit(0); } } } void insert(int A[],int &length,int n){ int i=0; while(i<length&&A[i]<n){ i++; } int temp=i; i=length; while(i>temp){ A[i]=A[i-1]; i--; } A[temp]=n; length++; } int _delete(int A[],int &length,int n){ //用于删除确定的一个数,可稍加修改,用于删除下表为n的数 int i=0; while(i<length&&A[i]!=n){ i++; } if(i==length){ //如果i等于数组的长度,则表示未查找到n值。 return 0; } else { //如果查找到n值。 while(i<length-1){ A[i]=A[i+1]; i++; } length--; return 1; } } int locate(int A[],int length,int n){ int i=0; while(i<length&&A[i]!=n){ i++; } if(i==length){ return 0; } else { return i; } } int get(int A[],int length,int index){ if(index<0||index>length-1){ //当索引下标小于0或大于长度-1的时候,就超出了数组范围。 return 0; } else { return A[index]; } } void create(int A[],int length){ cout<<"please input the numbers of the Array"<<endl; for(int i=0;i<length;i++){ cin>>A[i]; } cout<<endl<<"OK! the Array have been created!"<<endl; } void show(int A[],int length){ cout<<"current Array is:"<<endl; for(int i=0;i<length;i++){ cout<<A[i]<<' '; } cout<<endl; } void main1(){ cout<<"--------------------------------------------"<<endl; cout<<"| |"<<endl; cout<<"| welcome to use the SquenticalList |"<<endl; cout<<"| 1->create the list |"<<endl; cout<<"| 2->insert to the list |"<<endl; cout<<"| 3->show the list |"<<endl; cout<<"| 4->get the number |"<<endl; cout<<"| 5->delete the number |"<<endl; cout<<"| 6->locate the numbet |"<<endl; cout<<"| 7->exit |"<<endl; cout<<"| |"<<endl; cout<<"--------------------------------------------"<<endl; }
顺序表(C++)的更多相关文章
- jdk顺序表笔记
一.AbstractCollection 提供了集合的最大实现 继承该类,必须实现size()和iterator(),因为该类操作集合都是通过iterator 二.fail-fast策略 该策略在集合 ...
- c++顺序表基本功能
头文件 #define LIST_MAX_SIZE 5#define LISTINCREMENT 2#include<assert.h>#include<string>temp ...
- 数据结构:顺序表(python版)
顺序表python版的实现(部分功能未实现) #!/usr/bin/env python # -*- coding:utf-8 -*- class SeqList(object): def __ini ...
- 《数据结构》2.2顺序表(sequence list)
//顺序表节点的定义 typedef struct { datatype data[MAXSIZE]; //数组容量的上限 int len; //记录最后一个元素的位置,相当于一个指针,表空时len= ...
- c数据结构 顺序表和链表 相关操作
编译器:vs2013 内容: #include "stdafx.h"#include<stdio.h>#include<malloc.h>#include& ...
- java顺序表和树的实现
一.顺序表 1.线性表 //java顺序表的实现,如ArrayList就是用线性表实现的,优点是查找快,缺点是添加或删除要移动很多元素,速度慢 public class SequenceList { ...
- 数据结构顺序表删除所有特定元素x
顺序表类定义: template<class T> class SeqList : { public: SeqList(int mSize); ~SeqList() { delete[] ...
- 顺序表C语言版
#include <stdio.h> /* * 顺序表最多输入N个数 */ #define N 10 #define OK 1 #define ERROR -1 struct sequeu ...
- C#线性表之顺序表
线性表是最简单.最基本.最常用的数据结构.线性表是线性结构的抽象(Abstract), 线性结构的特点是结构中的数据元素之间存在一对一的线性关系. 这种一对一的关系指的是数据元素之间的位置关系,即: ...
- C语言 线性表 顺序表结构 实现
一个能够自动扩容的顺序表 ArrList (GCC编译). #include <stdio.h> #include <stdlib.h> #include <string ...
随机推荐
- Java常用集合类详解
在Java中有一套设计优良的接口和类组成了Java集合框架,使程序员操作成批的数据或对象元素极为方便.所有的Java集合都在java.util包中. 在编写程序的过程中,使用到集合类,要根据不同的需求 ...
- hdu----(5023)A Corrupt Mayor's Performance Art(线段树区间更新以及区间查询)
A Corrupt Mayor's Performance Art Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 100000/100 ...
- Python输出内容的三种方式:print输出 python脚本执行 linux直接执行
1. 在linux中安装python后,在linux命令行中输入python即可切换到Python命令行下 退出python命令行的命令: 老版本:ctrl+D 新版本:quit();或exit() ...
- 聚类算法:ISODATA算法
1. 与K-均值算法的比较 –K-均值算法通常适合于分类数目已知的聚类,而ISODATA算法则更加灵活: –从算法角度看, ISODATA算法与K-均值算法相似,聚类中心都是通过样本均值的迭代运算来决 ...
- js——<script>标签的加载顺序
用了很久的JavaScript,今天突然就碰见了将一个js文件放在<head></head>与<body></body>标签中,一个不可以执行,一个可以 ...
- 如何实现301的跳转?当输入域名http://xxx.com的时候自动重定向到www上去
答案:在服务器上操作,注意勾选和不勾选的区别,使用Fiddle进行观察,301和302之间的区别
- Hadoop作业JVM堆大小设置优化 [转]
前段时间,公司Hadoop集群整体的负载很高,查了一下原因,发现原来是客户端那边在每一个作业上擅自配置了很大的堆空间,从而导致集群负载很高.下面我就来讲讲怎么来现在客户端那边的JVM堆大小的设置.我们 ...
- discuz判断用户登录
在include/common.inc.php 文件.程序开始先判断是否有cookie存到了sid值,然后解密cookie['auth']这个用户登录状态加密字符串,如果解密出来有uid值表示 ...
- POJ 1436 Horizontally Visible Segments
题意: 有一些平行于y轴的线段 ,两条线段称为互相可见当且仅当存在一条水平线段连接这两条 与其他线段没交点. 最后问有多少组 3条线段,他们两两是可见的. 思路: 线段树,找出两两可见的那些组合, ...
- win7 64位安装mongodb及管理工具mongoVUE1.6.9.0
下载mongodb安装程序,官网地址:http://www.mongodb.org/downloads 我的是64位win7,选择: 然后双击下载的文件安装,我安装到本地的D盘里面 然后配置系统环境变 ...