• 顺序表(c++类模板实现)


    功能包含数据的插入,删除,定位,查找前驱元素,查找后驱元素,显示功能;主要包含两个文件;.h文件对类1定义和对模板类的功能实现   .cpp主要用于功能测试;(可以忽略下我的注释哈,都是些碎碎念555~)

    list.h文件

    #include
    #include //格式化
    using namespace std;

    #ifndef INCLUDE_LIST_H_
    #define INCLUDE_LIST_H_

    template //类模板声明   这为什么要加size 
    //template
    class List{//类声明
     private:
         int *m_list;//内存 
         int m_size; //内存大小
         int m_length;//数组长度 
      public: List() ;//构造函数
       ~List() ;//析构函数
       void clearlist() ;//初始化长度 
       bool listempty() ;//判断是否为空
       int listlength() ;//获取数组长度
       bool get(int i,elem*e) ;//查找指定下标函数,位置和数据的双重判断
       int locate(elem*e) ;//查找指定函数
       bool piror(elem*current,elem*preelem) ;//查找前驱元素
       bool next(elem*current,elem*nextelem) ;//查找后驱元素                                                    这里就tm离谱
       void  alllist() ;//遍历输出
       bool insert(int i,elem*e) ;//指定插入
       bool  del(int i,elem*e)  ;//指定删除                                                            为什么要用指针,好奇怪     
    }; 
    template//怎么还来一次
    List::List()//构造函数类模板 
    {
        m_size=size;//获得数据内存大小 
        m_list=new int[m_size] ;    //开辟空间                                         //有点意思这里 
        m_length=0;
    }
     template
     List::~List() 
     {
         delete[]m_list;//释放数据
         m_list=NULL;                                                         //释放了咋还弄成空的嘞 
     }
    template//再来一次 
    void List::clearlist()//设置长度为0函数 
    {  
          m_length=0;//内存为0 
        
    }
    template//不要忘记呀~
    bool List::listempty ()
    {
        if(m_length==0)
        return true;
        else
        return false;                                // 为什么从长度开始判断 
    }
    template//还来还来55 
    int List::listlength() 
    {
        return m_length;
    }
    template//。。。
    bool List::get(int i,elem*e) 
    {
        if(i<0||i>m_size||i==m_size)
        {
            cout<<"输入不合法" <         return false;
        }
        *e=m_list[i];
        return true;                                              //原谅我这里也有点疑惑 
    }
    template
    int List::locate(elem*e)
    {
        //定位
         for(int i=0;i      {
             if(m_list[i]==*e)//内存数据判断 
             {
                 return i;
             }
         }
         return -1; 
    }
    template
    bool List::piror(elem*current,elem*preelem)
    {
        int temp=locate(current);//查找目前数值的位置
        if(temp==-1) 
        {
        
            return false;
        }
        else if(temp==0)
        {
            cout<<"首元素没有前驱元素" <         return false;
        }
        else
        {
            *preelem=m_list[temp-1];
            return true; 
        }
    }
    template
    bool List::next(elem*current,elem*nextelem)
    {
           int temp=locate(current);
           if(temp==-1)
           {
               return false;
           }
           else if(temp==m_length-1)
           {
               cout<<"该元素没有后驱元素" <            return false;
           }
           else
           {
               *nextelem=m_list[temp+1];
               return true;
           }
    }
    template
    void List::alllist()
    {
        for(int i=0;i     {
            cout<     }
    }
    template
    bool List::insert(int i,elem*e) 
    {
        if(i<0||i>m_length)//合法判断 
        {
            return false;
        }
        for(int k=m_length-1;k>=i;k--) 
        {
            m_list[k+1]=m_list[k];//依法次后移动 
        }
        m_list[i]=*e;
        m_length++;
        return true;
    }
    //删除元素
    template
    bool List::del(int i, elemtype *e)
    {
        if (i<0 || i>m_length)
            return false;
        *e = m_list[i];
        for (int k = i + 1; k < m_length; k++)
        {
            m_list[k - 1] = m_list[k];
        }
        m_length--;
        return true;}


    #endif    /* INCLUDE_LIST_H_ */               //这是个什么注释表达方法

    main.cpp文件

    #include  
    #include "list.h"
    #include
    using namespace std;
    typedef double elem;//重命名 
    int main()
    {
        elem temp;
        elem a[100];
        Listlist1;
        cout<<"数值导入前顺序表长度"<     cout<<"请输入元素个数"<     int n;
        cin>>n;
        cout<<"请输入各个元素数值"<     for(int i=0;i     {
            cin>>a[i];
        }
         for(int i=0;i      {
             list1.insert(i,&a[i]);//插入元素 
         }
         cout<<"数值导入后顺序表长度"<      cout<<"请输入要进行的操作"<      cout<<"1: 查找前驱元素" <      cout<<"2: 查找后驱元素"<      cout<<"3:删除顺序表中某元素" <      cout<<"4:某位置插入元素"<      cout<<"5:查找某元素的位置"<     int d;
        cin>>d; 
        switch(d)
        {
            case 1:
                cout<<"请输入查找前驱元素的序号";
           int b;
           cin>>b; 
         list1.piror(&a[b-1],&temp);
          cout<<"查找元素的前驱元素为"<      break;
         case 2:
              cout<<"请输入查找后驱元素的序号";
             int h;
             cin>>h; 
            list1.next(&a[h-1],&temp) ;
             cout<<"查找元素的后驱元素为"<       break;
         case 3:
             int u;
             cout<<"请输入要删除的元素位置"<          cin>>u;
              list1.del(d-1,&temp);
             cout<<"被删除的元素"<           cout<<"删除后的顺序表为"<          list1.alllist();
        break;
        case 4:
            cout<<"请输入插入元素的位置" <         int o;
            cin>>o;
            cout<<"请输入插入的元素"<         double m;
            cin>>m;
            temp=m;
            list1.insert(o-1,&temp) ;
            cout<<"插入后的顺序表为"<         list1.alllist();
            break;
        case 5:
            cout<<"请输入查找元素的数值"<         int num;
            cin>>num;
            temp=num;
            cout<<"查找元素的位置为"<         break;
            
        }
        
         
         return 0; 
    }

    先发吧,后续的知识点我今天晚上回去总结下顺序表实现的思路)

  • 相关阅读:
    Vue.js入门教程(一)
    你还在怕忘记网盘密码?商鼎云助记词登录保障你的安全
    比较Zoho Mail和ProtonMail:哪个更适合企业邮箱?
    Facebook Delos 中的虚拟共识协议
    C++ Reference: Standard C++ Library reference: C Library: cwchar: wcscoll
    ​​【项目实战】犬只牵绳智能识别:源码详细解读与部署步骤
    一个用于翻译 CSV 文件的 Python 脚本,适用于将英文内容批量翻译成中文(或其他语言),并解决文件编码导致的中文乱码和无法翻译的问题。
    目标检测-Yolo框架
    【C++】STL之适配器---用deque实现栈和队列
    NSS [HUBUCTF 2022 新生赛]checkin
  • 原文地址:https://blog.csdn.net/weixin_62802660/article/details/126977940