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

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

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

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

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

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

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

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

① 头文件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. nuget的搭建及多源冲突

    为什么使用nuget来管理类库引用就不再阐述,好处真的一抓一把.在使用nuget的时候,我们如果总去访问别人的nuget源,受限于网络情况的好坏,速度真的没法保证,更别说访问国外的源了.那好,我们来自 ...

  2. MySQL 查询所有子级函数

    BEGIN DECLARE sChildList VARCHAR(4000); DECLARE sChildTemp VARCHAR(4000); SET sChildTemp =cast(rootI ...

  3. js array push 添加内容

    向数组中天机内容: var array = new Array(); array.push('newItem');

  4. C# 调用webservice 几种办法(转载)

    原文地址: http://www.cnblogs.com/eagle1986/archive/2012/09/03/2669699.html //=========================== ...

  5. 用ip来获得用户所在地区信息

    淘宝api: package com.ebways.mq.utils; import com.alibaba.fastjson.JSON; import com.ebways.common.utils ...

  6. lombok 简化java代码注解

    lombok 简化java代码注解 安装lombok插件 以intellij ide为例 File-->Setting-->Plugins-->搜索"lombok plug ...

  7. iOS 局部变量 全局变量 成员变量

    一.成员变量 : 写在类声明的大括号中的变量叫成员变量 (也叫属性/实例变量) 成员变量不可离开类 离开了类就不是成员变量 成员变量不能再定义的同事初始化 成员量只能通过对象来访问 成员变量存储在堆中 ...

  8. maven学习(上)- 基本入门用法

    一.下载及安装 1.1 下载maven 3.1.1 先到官网http://maven.apache.org/download.cgi 下载最新版本(目前是3.1.1 ),下载完成后,解压到某个目录(本 ...

  9. OC与Swift单例

    OC: +(instancetype)shareNetworkTools{ static id instance; static dispatch_once_t onceToken; //onceTo ...

  10. EF操作多数据库

    1.Account3_Register_DB_Model作为(空)模板库,根据此模板生成的其他数据除了数据库名称不一样,其他表,视图,字段等等都一致 2.Account3_Platform_Maste ...