签到

05月08日
尚未签到

共有回帖数 0

    Karlie

    等级:
    #include "stdlib.h"
    #include "stdio.h"
    #include "string"
    #include "iostream"
    using namespace std;

    template class T
    class sq_List
    {
        public:
         sq_List(int c,int l){cap = c;len = l;} //构造函数,初始化表长度和空间容量  

         void creat_List();   //创建空的顺序表  
         T check_List();      //检测顺序表的状态  
         void input_List();   //输入顺序表的元素        
         T *insert_List(int pos,int num); //插入元素  
         T *delete_List(int pos);//删除元素  
         void show_List();    //输出新表
         void free_List();   //释放空间  
               
        private:
         int cap;   //存储空间容量  
         int len;   //顺序表的长度  
         T *p;      //模板类型指针                
    };
    //建立空的顺序表  
    template class T
    void sq_ListT::creat_List()
    {      
        p = new T[cap]; //指向动态开辟的一维数组空间的首地址      
             
    }
    //检测顺序表  
    template class T
    T sq_ListT::check_List()
    {
        if(cap == len) return -1;
        else if(len == 0) return 0;
        else return 1;  
    }
    //输入顺序表的元素,输出  
    template class T
    void sq_ListT::input_List()
    {
        int i;
        for(i = 0;ilen;i++)     //输入顺序表的元素  
        cin  *(p+i);          
         
        for(i = 0;ilen;i++)     //输出顺序表的元素      
        cout  *(p+i)  " ";
         
        cout  endl;
                           
    }
    //插入元素  
    template class T
    T *sq_ListT::insert_List(int pos_in,int num)
    {
                                   
        int i;
        if(cap == len) cout  "上溢错误"  endl;//顺序表已满的情况  
        if(pos_inlen) pos_in = len+1;        //插入位置在表的最后一个元素之后,表中元素不需要移动  
        if(pos_in1) pos_in = 1;   //插入元素在表的第一个元素之前,需要移动 表的所有元素  
         
        for(i = len;i=pos_in;i--)  
        p = p[i-1];
         
        p[pos_in-1] = num;    //插入新元素  
        len++;             //表长度加一  
        return p;          //返回首地址  
                             
    }
    //删除元素  
    template class T
    T *sq_ListT::delete_List(int pos_de)
    {
        int i;
        if(len == 0)  cout  "下溢错误"  endl; //顺序表为空表,表中没有元素  
        if(pos_de1||pos_de=len) cout  "没有这个元素"  endl;//表中没有待删除的元素  
        for(i = pos_de;ilen;i++)
        p[i-1] = p;
        len--;               //表长度减一  
         
                                       
    }
    //输出顺序表  
    template class T
    void sq_ListT::show_List()
    {
        int i;
        for(i = 0;ilen;i++)     //输出顺序表的元素      
        cout  *(p+i)  " ";                    
    }
    //释放空间  
    template class T
    void sq_ListT::free_List()
    {
        delete []p;      
    }



    int main()
    {
        sq_Listint list(10,7);
        list.creat_List();
        list.input_List();
        list.check_List();
        list.insert_List(5,26);
        list.delete_List(8);      
        list.show_List();
        list.free_List();
             
        system("pause");
        return 0;      
           
    }

    楼主 2016-01-28 14:11 回复

共有回帖数 0
  • 回 帖
  • 表情 图片 视频
  • 发表

登录直线网账号

Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号 意见反馈 | 关于直线 | 版权声明 | 会员须知