顺序表(SeqList)
---恢复内容开始---
数据结构在上周结课,接下来就是为期几周的上机实验,说是实验课我感觉还不如不上。几乎每个人都是按着老师的要求把书上的代码打一遍,变都不变。一遍以后连自己打的什么都不知道。
与其说是实验课,我感觉不如叫它打字练习课。
老师做的并没错,错的是学生对于这节课的态度,老师已经把该讲的讲过了,而上机就是学生们自己领悟的过程,对于代码不能打一遍就是一遍过去了。要在打的过程中了解你所打的每一句
代码是干什么的、在函数中起到的是什么作用,而这个函数在整个程序中起到的又是什么作用。所以我写这篇博客,是我离开书本自己去尝试打第二次,试着去回忆,试着去自己坐。而后的注释
是第三次去看这段代码,自己加上去的,然后再与书本对照,看看自己想法上面的错误。
之前听好多人对我说,数据结构是编程最重要的基本功没有之一!而我认为:当你在考虑学一个东西值不值得学的时候,你应该去把它学了,不然往往会后悔。通过这个学期的学习,我也能
体会到数据结构的重要性。数据结构是基础,数据结构之于编程就像加减乘除之于数学,所以要把他作为我学习的重中之重。
① 头文件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)的更多相关文章
- 线性表之顺序表C++实现
线性表之顺序表 一.头文件:SeqList.h //顺序线性表的头文件 #include<iostream> ; //定义顺序表SeqList的模板类 template<class ...
- 数据结构——顺序表(sequence list)
/* sequenceList.c */ /* 顺序表 */ /* 线性表的顺序存储是指在内存中用地址连续的一块存储空间顺序存放线性表中的各项数据元素,用这种存储形式的线性表称为顺序表. */ #in ...
- [数据结构 - 第3章] 线性表之顺序表(C++实现)
一.类定义 顺序表类的定义如下: #ifndef SEQLIST_H #define SEQLIST_H typedef int ElemType; /* "ElemType类型根据实际情况 ...
- 线性表源码分享(c++),包含顺序表、单链表、循环链表、双向链表
---恢复内容开始--- 我是一个c++和数据结构的初学者,本文主要是把清华大学出版社的数据结构(用面向对象方法与c++语言描述)(第2版)这本书中第二章线性表的源码抄下来,在学习的过程中有助于加深印 ...
- C语言项目实现顺序表
#include <stdio.h> #include <stdlib.h> #include "test_顺序表声明.h" /* run this pro ...
- 数据结构:顺序表(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= ...
- 数据结构顺序表删除所有特定元素x
顺序表类定义: template<class T> class SeqList : { public: SeqList(int mSize); ~SeqList() { delete[] ...
- C#线性表之顺序表
线性表是最简单.最基本.最常用的数据结构.线性表是线性结构的抽象(Abstract), 线性结构的特点是结构中的数据元素之间存在一对一的线性关系. 这种一对一的关系指的是数据元素之间的位置关系,即: ...
随机推荐
- mysql SQL优化之嵌套查询-遁地龙卷风
(-1) 写在前面 这篇随笔的数据使用的是http://blog.csdn.net/friendan/article/details/8072668#comments里的,里面有一些常见的select ...
- linux 安装maven
set maven environment M2_HOME=/tool/apache-maven-3.3.9export M2_HOME PATH=$PATH:$M2_HOME/bin expor ...
- git知识点整理
- jquery validate minlength rule is not working
Question: I have a form with a password field. The password has to be at least 8 characters long. &l ...
- Mac 编写oracle 连接脚本
首先需要本地存有sqlplus命令, 如果没有则需要到官网下载 也可点击我进行下载 (解压 readme.txt 有安装配置说明): 在Oracle官网下载instant client for os ...
- Linux下编译安装MariaDB
MariaDB是MySQL的一个开源分支,主要是社区在维护,并且完全兼容MySQL,并且可以很方便的称为MySQL的替代,MariaDB的诞生正是出自MySQL创始人Michael Widenius之 ...
- ztree-demo 2
<!DOCTYPE html> <HTML> <HEAD> <TITLE> ZTREE DEMO - Async</TITLE> <m ...
- 表现层的设计(二)——MVC如何处理复杂的界面元素
需求描述 一个比较复杂的页面,界面中包含的元素数据来自于许多个有关联或者无关联的表,然后我们要做的就是将数据呈现在界面上. 10年前大概都是这么干的 直接写一个复杂的SQL语句,返回一个包含所需数据的 ...
- Centos7下安装mysql5.7.16
mysql的安装(root用户下) 从官网下载软件 linux下必须安装系统对应的版本,多少位 必须安装的是:server,client 但是我可不管要安装那个插件,我们直接使用bundle版本(就是 ...
- hbase1.2.4 伪分布式安装
注意:在安装hbase或者hadoop的时候,要注意hadoop和hbase的对应关系.如果版本不对应可能造成系统的不稳定和一些其他的问题.在hbase的lib目录下可以看到hadoop对应jar文件 ...