zoukankan      html  css  js  c++  java
  • 顺序表(SeqList)

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

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

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

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

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

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

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

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

    ① 头文件SeqList.h:

     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:

     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:

     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

    运行结果:

  • 相关阅读:
    批量插入SQL(适用于数据量十万级以上的快速大量插入)
    python爬虫BUG(爬取航班信息)
    python爬虫实例(爬取航班信息)
    python入门基础
    C#生成Guid的几种方式
    微信小程序echart图
    替换SQL字段中的换行符,回车符
    ASP.NET目录
    增删改查程序
    C++中explicit关键字的使用
  • 原文地址:https://www.cnblogs.com/kpxy/p/6188223.html
Copyright © 2011-2022 走看看