顺序表(SeqList)
---恢复内容开始---
数据结构在上周结课,接下来就是为期几周的上机实验,说是实验课我感觉还不如不上。几乎每个人都是按着老师的要求把书上的代码打一遍,变都不变。一遍以后连自己打的什么都不知道。
与其说是实验课,我感觉不如叫它打字练习课。
老师做的并没错,错的是学生对于这节课的态度,老师已经把该讲的讲过了,而上机就是学生们自己领悟的过程,对于代码不能打一遍就是一遍过去了。要在打的过程中了解你所打的每一句
代码是干什么的、在函数中起到的是什么作用,而这个函数在整个程序中起到的又是什么作用。所以我写这篇博客,是我离开书本自己去尝试打第二次,试着去回忆,试着去自己坐。而后的注释
是第三次去看这段代码,自己加上去的,然后再与书本对照,看看自己想法上面的错误。
之前听好多人对我说,数据结构是编程最重要的基本功没有之一!而我认为:当你在考虑学一个东西值不值得学的时候,你应该去把它学了,不然往往会后悔。通过这个学期的学习,我也能
体会到数据结构的重要性。数据结构是基础,数据结构之于编程就像加减乘除之于数学,所以要把他作为我学习的重中之重。
① 头文件SeqList.h:
![](/assets/blank.gif)
![](/assets/blank.gif)
1 //#ifndef SeqList_H 避免重复包含SeqList.h头文件 但是在Dec-C++中不能用 2 #define SeqList_H 3 const int MaxSize=15; //该线性表最多有15个元素 4 5 class SeqList 6 { 7 public: 8 SeqList(){length=0;} //无参构造函数 9 SeqList(int a[],int n); //有参构造函数 10 ~SeqList(){} //析构函数 11 void Insert(int i,int x); //在表的第i个位置插入之为x的元素 12 int Delete(int i); //删除第i个元素 13 int Locate(int x); //求值为x的元素在线性表中的位置 14 void PrintList(); //按序号依次输出各元素 15 private: 16 int data[MaxSize]; //存放数据元素的数组 17 int length; //线性表的长度 18 };
SeqList.h
②成员函数定义文件SeqList.cpp:
![](/assets/blank.gif)
![](/assets/blank.gif)
1 #include<iostream> 2 using namespace std; 3 #include"SeqList.h" //引入在.h文件中类的声明 4 5 SeqList::SeqList(int a[],int n) 6 { 7 if(n>MaxSize) throw "参数非法"; //元素的数量要小于MaxSize 8 for(int i=0;i<n;i++) 9 data[i]=a[i]; 10 length=n; 11 } 12 void SeqList::Insert(int i,int x) 13 { 14 if(length>=MaxSize) throw "上溢"; 15 if(i<1||i>length+1) throw "位置非法"; 16 for(int j=length;j>=i;j--) //将第j个元素存在数组下标为j-1处; 17 data[j]=data[j-1]; 18 data[i-1]=x; 19 length++; 20 } 21 int SeqList::Delete(int i) 22 { 23 if(length==0) throw "下溢"; 24 if(i<1||i>length) throw "位置非法"; 25 int x=data[i-1]; 26 for(int j=i;j<length;j++) 27 data[j-1]=data[j]; 28 length--; 29 return x; 30 } 31 int SeqList::Locate(int x) 32 { 33 for(int i=0;i<length;i++) 34 if(data[i]==x) return i+1; //下标为i的元素的序号为i+1 35 return 0; //找不到值为x的元素 36 } 37 void SeqList::PrintList() 38 { 39 for(int i=0;i<length;i++) 40 cout<<data[i]<<" "; 41 cout<<endl; 42 }
SeqLis.cpp
③主函数文件SeqList_main.cpp:
![](/assets/blank.gif)
![](/assets/blank.gif)
1 #include<iostream> 2 using namespace std; 3 #include"SeqList.h" //引入在.h文件中类的声明 4 5 int main() 6 { 7 int r[10]={5,7,2,0,1,5,1,0,0,7}; //老师要求将学号存入线性表 8 SeqList L(r,10); 9 cout<<"执行插入操作前数据为:"<<endl; 10 L.PrintList(); 11 try 12 { 13 L.Insert(2,3); //在第2个位置插入值为3的元素 14 } 15 catch (char *s) 16 { 17 cout<<s<<endl; 18 } 19 cout<<"执行插入操作后数据为:"<<endl; 20 L.PrintList(); //输出所有元素 21 cout<<"值为3的元素位置为:"; 22 cout<<L.Locate(3)<<endl; 23 cout<<"执行删除第一个元素操作,删除前数据为:"<<endl; 24 L.PrintList(); 25 try 26 { 27 L.Delete(1); //删除第1个元素 28 } 29 catch(char *s) 30 { 31 cout<<s<<endl; 32 } 33 cout<<"删除后数据为:"<<endl; 34 L.PrintList(); 35 return 0; 36 }
SeqList_main.cpp
运行结果:
转载于:https://www.cnblogs.com/kpxy/p/6188223.html
顺序表(SeqList)相关推荐
- 数据结构-顺序表(SeqList)
顺序表 SeqList C实现 C++实现 结构代表数据和数据之间的关系 1.同属一个集合 不允许元素重复 2.线性关系 一对一的关系 除了第一个之外 没有直接前驱最后一个没有直接后继 中间节点都有唯 ...
- 顺序表(Seqlist)链表(List)的基础操作
描述: 顺序表和链表是数据结构的基础结构之一,同样也是面试的基础.初学者对于Seqlist和List的增删改查的基础练习,为其后的Tree,HashTable,Binary Linked List,T ...
- 顺序表(SeqList) Java实现
实现的操作包括: 向顺序表末尾添加数据 ( addData( Data)): 向顺序表指定位置添加数据( insertDataByLoc( Location)): 删除顺序表中指定的数据( delet ...
- 数据结构_顺序表SeqList(C++
数据结构_SeqList顺序表(C++实现 文章目录 数据结构_SeqList顺序表(C++实现 前言&注意事项 顺序表实现方法 总结 结束 前言&注意事项 有些函数没有修改成员数据的 ...
- 顺序表SeqList的各种操作
SeqList顺序表 顺序表是用一段物理地址连续的存储单元一次存储数据元素的线性结构,一般情况下采用数组存储,可分为静态顺序表与动态顺序表. 静态顺序表:使用定长数组存储 动态顺序表:使用动态开辟的数 ...
- 01、顺序表SeqList
SeqList.h #pragma once #define ListSize 100 typedef int DataType; typedef struct {DataType list[List ...
- 【C语言】详解顺序表(SeqList)
- 【数据结构】使用Java实现顺序表类 SeqList
目录 线性表介绍 顺序表介绍 Java->顺序表API Java->顺序表代码 使用顺序表示例 线性表介绍 数据结构中的线性存储结构分为两大类:顺序存储和链式存储,顺序存储对应的是顺序表, ...
- 数据结构之顺序表(二)
这是接着之前的剩下来的部分: #include <stdlib.h> #include "SeqList.h" #include <stdio.h>SeqL ...
最新文章
- OpenSSH7.0兼容性测试报告
- Asp.NET 的几个高级技巧
- redistemplate hash 过期时间_Redis开发 —— 过期消息通知实现(Springboot)
- 最优化——分析线性规划的对偶问题的等价性
- vue vuex 挂载_GitHub - BingoVue/vuex: 用Vue实现简版vuex
- 关于 IMPP/XMPP/SIMPLE 这几种即时通讯协议和NAT traversal
- html 无组件上传图片,无组件上传图片到数据库中,最完整解决方案
- ojective-C学习笔记(7)Foundation框架
- o'LogonUI Changer XP登陆界面更换器
- hmcl手机版_hmcl启动器手机版
- 程序员修炼之道:务以己任,实则明心——通向务实的最高境界
- 如何彻底卸载3dmax2020_3DMAX 2020安装失败,怎么把3DMAX 2020彻底卸载删除干净重新安装?...
- 机器学习 Cohen s Kappa,Quadratic Weighted Kappa 详解
- 小米wifi显示无网络连接到服务器,小米路由器wifi连接上不能上网怎么办?
- 生成xslx文件,写入并读取
- HDLBits-Exams/ece241 2013 q4、Lemmings1、Lemmings2、Lemmings3、Lemmings4
- Field brandService in cn.est.service.impl.HomeServiceImpl required a bean of type ‘cn.est.service.Br
- kaliLinux安装的常见镜像文件以及蓝屏处理
- HDU 5405 (树链剖分+线段树)
- 逆向某视频app(一)