---恢复内容开始---

  数据结构在上周结课,接下来就是为期几周的上机实验,说是实验课我感觉还不如不上。几乎每个人都是按着老师的要求把书上的代码打一遍,变都不变。一遍以后连自己打的什么都不知道。

与其说是实验课,我感觉不如叫它打字练习课。

  老师做的并没错,错的是学生对于这节课的态度,老师已经把该讲的讲过了,而上机就是学生们自己领悟的过程,对于代码不能打一遍就是一遍过去了。要在打的过程中了解你所打的每一句

代码是干什么的、在函数中起到的是什么作用,而这个函数在整个程序中起到的又是什么作用。所以我写这篇博客,是我离开书本自己去尝试打第二次,试着去回忆,试着去自己坐。而后的注释

是第三次去看这段代码,自己加上去的,然后再与书本对照,看看自己想法上面的错误。

  之前听好多人对我说,数据结构是编程最重要的基本功没有之一!而我认为:当你在考虑学一个东西值不值得学的时候,你应该去把它学了,不然往往会后悔。通过这个学期的学习,我也能

体会到数据结构的重要性。数据结构是基础,数据结构之于编程就像加减乘除之于数学,所以要把他作为我学习的重中之重。

① 头文件SeqList.h:

 //#ifndef SeqList_H                            避免重复包含SeqList.h头文件  但是在Dec-C++中不能用
#define SeqList_H
const int MaxSize=; //该线性表最多有15个元素 class SeqList
{
public:
SeqList(){length=;} //无参构造函数
SeqList(int a[],int n); //有参构造函数
~SeqList(){} //析构函数
void Insert(int i,int x); //在表的第i个位置插入之为x的元素
int Delete(int i); //删除第i个元素
int Locate(int x); //求值为x的元素在线性表中的位置
void PrintList(); //按序号依次输出各元素
private:
int data[MaxSize]; //存放数据元素的数组
int length; //线性表的长度
};

SeqList.h

②成员函数定义文件SeqList.cpp:

 #include<iostream>
using namespace std;
#include"SeqList.h" //引入在.h文件中类的声明 SeqList::SeqList(int a[],int n)
{
if(n>MaxSize) throw "参数非法"; //元素的数量要小于MaxSize
for(int i=;i<n;i++)
data[i]=a[i];
length=n;
}
void SeqList::Insert(int i,int x)
{
if(length>=MaxSize) throw "上溢";
if(i<||i>length+) throw "位置非法";
for(int j=length;j>=i;j--) //将第j个元素存在数组下标为j-1处;
data[j]=data[j-];
data[i-]=x;
length++;
}
int SeqList::Delete(int i)
{
if(length==) throw "下溢";
if(i<||i>length) throw "位置非法";
int x=data[i-];
for(int j=i;j<length;j++)
data[j-]=data[j];
length--;
return x;
}
int SeqList::Locate(int x)
{
for(int i=;i<length;i++)
if(data[i]==x) return i+; //下标为i的元素的序号为i+1
return ; //找不到值为x的元素
}
void SeqList::PrintList()
{
for(int i=;i<length;i++)
cout<<data[i]<<" ";
cout<<endl;
}

SeqLis.cpp

③主函数文件SeqList_main.cpp:

 #include<iostream>
using namespace std;
#include"SeqList.h" //引入在.h文件中类的声明 int main()
{
int r[]={,,,,,,,,,}; //老师要求将学号存入线性表
SeqList L(r,);
cout<<"执行插入操作前数据为:"<<endl;
L.PrintList();
try
{
L.Insert(,); //在第2个位置插入值为3的元素
}
catch (char *s)
{
cout<<s<<endl;
}
cout<<"执行插入操作后数据为:"<<endl;
L.PrintList(); //输出所有元素
cout<<"值为3的元素位置为:";
cout<<L.Locate()<<endl;
cout<<"执行删除第一个元素操作,删除前数据为:"<<endl;
L.PrintList();
try
{
L.Delete(); //删除第1个元素
}
catch(char *s)
{
cout<<s<<endl;
}
cout<<"删除后数据为:"<<endl;
L.PrintList();
return ;
}

SeqList_main.cpp

运行结果:

顺序表(SeqList)的更多相关文章

  1. 线性表之顺序表C++实现

    线性表之顺序表 一.头文件:SeqList.h //顺序线性表的头文件 #include<iostream> ; //定义顺序表SeqList的模板类 template<class ...

  2. 数据结构——顺序表(sequence list)

    /* sequenceList.c */ /* 顺序表 */ /* 线性表的顺序存储是指在内存中用地址连续的一块存储空间顺序存放线性表中的各项数据元素,用这种存储形式的线性表称为顺序表. */ #in ...

  3. [数据结构 - 第3章] 线性表之顺序表(C++实现)

    一.类定义 顺序表类的定义如下: #ifndef SEQLIST_H #define SEQLIST_H typedef int ElemType; /* "ElemType类型根据实际情况 ...

  4. 线性表源码分享(c++),包含顺序表、单链表、循环链表、双向链表

    ---恢复内容开始--- 我是一个c++和数据结构的初学者,本文主要是把清华大学出版社的数据结构(用面向对象方法与c++语言描述)(第2版)这本书中第二章线性表的源码抄下来,在学习的过程中有助于加深印 ...

  5. C语言项目实现顺序表

    #include <stdio.h> #include <stdlib.h> #include "test_顺序表声明.h" /* run this pro ...

  6. 数据结构:顺序表(python版)

    顺序表python版的实现(部分功能未实现) #!/usr/bin/env python # -*- coding:utf-8 -*- class SeqList(object): def __ini ...

  7. 《数据结构》2.2顺序表(sequence list)

    //顺序表节点的定义 typedef struct { datatype data[MAXSIZE]; //数组容量的上限 int len; //记录最后一个元素的位置,相当于一个指针,表空时len= ...

  8. 数据结构顺序表删除所有特定元素x

    顺序表类定义: template<class T> class SeqList : { public: SeqList(int mSize); ~SeqList() { delete[] ...

  9. C#线性表之顺序表

    线性表是最简单.最基本.最常用的数据结构.线性表是线性结构的抽象(Abstract), 线性结构的特点是结构中的数据元素之间存在一对一的线性关系. 这种一对一的关系指的是数据元素之间的位置关系,即: ...

随机推荐

  1. java.lang.ClassNotFoundException: com.mysql.jdbc.Driver解决办法

    这个问题的原因是没有导入mysql连接库,我从官网上下载后照着网上的教程各种导入无果,最后发现是我导入的文件错了.... 官网上下下来的压缩文件是这个,不过这并不是直接要导入的文件,首先解压文件,然后 ...

  2. MySQL 应用优化

    一.使用连接池 二.减少对MySQL的访问 (A) 避免对同一数据做重复检索. (B) 使用查询缓存,MySQL的查询缓存会存储SELECT查询的命令文本和相应的结果. (C) 增加CACHE层 三. ...

  3. 在centos 7.0上利用yum一键安装mono

    首先我们需要先配置一下yum源中mono的引用说明: 第一步: vi /etc/yum.repos.d/mono.repo 第二步:在刚打开的文件中编辑如下内容 [mono]name=monobase ...

  4. phalcon3.0.1默认多模块生成的几个bug

    发现用Phalcon DevTools (3.0.0)生成的多模块有一些bug: 默认的路由定义,字符串替换有误 原代码// $namespace = str_replace('Module','Co ...

  5. select2 demo

    https://select2.github.io/examples.html 一大堆的坑: 1. 不同版本之间貌似不兼容,对应版本看对应的文档. 2. 4.0.3版本: 1). 自定义渲染的opti ...

  6. 「C++11」Lambda 表达式

    维基百科上面对于 lambda 的引入是如下描述的: 在标准 C++,特别是当使用 C++ 标准程序库算法函数诸如 sort 和 find.用户经常希望能够在算法函数调用的附近定义一个临时的述部函数( ...

  7. I/O 函数总结

    经过一段时间的学习,发现字符处理时或者文件处理时,经常需要进行输入(读入)和输出,而可供选择的函数很多,现在反而容易搞混淆,下面就对常用的7个 输入输出函数 进行总结和比较,以便于区分和熟练掌握. 标 ...

  8. java模拟浏览器上传文件

    public static void main(String[] args) { String str = uploadFile("C:/Users/RGKY/Desktop/wKgBHVb ...

  9. 使用VBScript实现设置系统环境变量的小程序

    本人有点桌面洁癖,桌面上只放很少的东西,很多软件都用快捷键调出.最近频繁用到一个软件,我又不想放个快捷方式在桌面,也不想附到开始菜单,于是乎想将其所在目录附加到系统环境变量Path上,以后直接在运行中 ...

  10. 使用Json Web Token设计Passport系统

    >>Token Auth机制 基于Token的身份验证是无状态的,我们不将用户信息存在服务器或Session中. 相比原始的Cookie+Session方式,更适合分布式系统的用户认证,绕 ...