zoukankan      html  css  js  c++  java
  • 写一个顺序表模板,包括顺序表的基本功能,例如查找,插

    /*写一个顺序表模板,包括顺序表的基本功能,例如查找,插入,删除,输出,判断是否为空等等*/
    #include<iostream.h>
    #include<stdlib.h>
    template<class T,int size>
    class Orderdlist{
    private:
     int maxsize;
     int last;
     T slist[size];
    public:
     Orderdlist()//构造函数
     {
      last=-1;
      maxsize=size;
     }
     int Length()const//计算表的长度
     {
      return last+1;
     }
     int find(T x)//寻找x在表中的位置
     {
      int i;
      for(i=0;i<last;i++)
      {
       if(slist[i]==x)
        return i;
      }
      return 0;
     }
     bool panduan(T x)//判断x是否在表中
     {
      int i;
      for(i=0;i<last;i++)
      {
       if(slist[i]==x)
        return true;
      }
      return false;
     }
     bool insert(T x,int i)//x插入列表第i个位置处
     {
      int j;
      if(i<0 || i>last+1 || last==maxsize-1)
      {
       return false;
      }
      else
      {
       last++;
       for(j=last;j>i;j--)
        slist[j]=slist[j-1];
       slist[i]=x;
       return true;
      }
      
     }
     void print()
     {
      int i;
      if(IsEmpty())
      {
       cout<<"顺序表位空,无法输出"<<endl;
       exit(0);
      }
      else
      {
       for(i=0;i<last;i++)
       {
        cout<<slist[i]<<'/t';
        if((i+1)%5==0)
        {
         cout<<endl;
        }
       }
      }
      cout<<endl;
     }
     bool shanchu(T x)//删除x
     {
      int i=find(x),j;
      if(i>=0 && i<last)
      {
       for(j=i;j<last;j++)
        slist[j]=slist[j+1];
       last--;
       return true;
      }
      return false;
     
     }
     int houji(T x)//寻找x的后继位置
     {
      int i=find(x);
      if(i>=0 && i<last)
      {
       return i+1;
      }
      return -1;
     }

     int qianqu(T x)//寻找x的前驱位置
     {
      int i=find(x);
      if(i>0 && i<=last)
      {
       return i-1;
      }
      return -1;
     }
     bool IsEmpty()//判断表是否为空
     {
      if(last==-1)
      {
       return true;
      }
      else
      {
       return false;
      }
     }
     bool IsFull()//判断表是否为满
     {
      if(last==maxsize-1)
      {
       return true;
      }
      else
      {
       return false;
      }
     }
     T quzhi(int i)//取第i个元素的值
     {
      return slist[i];
     }
     T& operator[](int x)//重载符号“[]”
     {
      if(x<0 || x>last)
      {
       cout << "产生越界错误!" <<endl;
       exit(0);
      }
      else
      {
       return slist[x];
      }
     }
    };

    int main()
    {
     Orderdlist<int,100>Order;//顺序表对象Order的元素为整型
     int i,j,k,a[10]={2,3,5,7,11,13,17,23,29};
     for(j=0;j<10;j++)//检测插入素数函数
      if(!Order.insert(a[j],j))
      {
       cout<<"表太大了,放不下"<<endl;
       break;
      }
     j=Order.Length();
     Order.print();
     for(j=0;j<10;j++)
      Order[j]=0;
     Order.print();
     for(j=0;j<10;j++)
      Order[j]=a[j];
     k=7;
     if(Order.panduan(k))
     {
      cout<<"素数7在顺序表中"<<endl;
     }
     else
     {
      cout<<"素数7不在顺序表中"<<endl;
     }
     k=17;
     if(Order.shanchu(k))
     {
      cout<<"成功删除素数17"<<endl;
     }
     else
     {
      cout<<"找不到素数17,无法删除";
     }
     Order.print();
     j=Order.Length();
     if(Order.insert(k,j-2))
     {
      cout<<"成功将素数17放回"<<endl;
      Order.print();
     }
     cout<<"17的后一个数字是:"<<Order.quzhi(Order.houji(k))<<endl;
     cout<<endl;
     return 0;
    }

  • 相关阅读:
    my first android test
    VVVVVVVVVV
    my first android test
    my first android test
    my first android test
    ini文件
    ZZZZ
    Standard Exception Classes in Python 1.5
    Python Module of the Week Python Module of the Week
    my first android test
  • 原文地址:https://www.cnblogs.com/javaadu/p/11742828.html
Copyright © 2011-2022 走看看