线性表操作

//Written by LiuZhe(liuzhedash@gmail.com)
//Welcome to my blog:http://blog.csdn.net/liuzhedash
class sqlist
{
private :
      int *elem;//pointer of elem
      int length;//amount of elem
      int listsize;//capacity of list
public :
      void sqlistinitialize();//initialize list
      bool isempty();//emptiness judgement
      bool isfull();//same above
      void newspace();//need new memory
      int getelem(int);//locate elem
      bool insert(int,int);//insert a elem to determind location
      void fill();//fill up a list
      int del(int);//delete a elem by determind location,return the deleted elem
      void display();//display the features of list
      void listdelete();
};

void sqlist::sqlistinitialize()
{
     elem=new int[initsize];//
     length=0;
     listsize=initsize;
}

bool sqlist::isempty()
{
     return length==0;
}

bool sqlist::isfull()
{
     return length==listsize;
}

void sqlist::newspace()
{
     int j;//subscript
     int* tempelem;//temp list
     tempelem=new int[listsize+increment];//apply for new memory
     for(j=0;j<=length;j++)
        tempelem[j]=elem[j];//copy elem to tempelem
     delete [] elem;//free elem space
     elem=tempelem;//redirect elem
     listsize+=increment;
}

int sqlist::getelem(int i)
{
     if ((i<0)||(i>length))
              {cout<<"Illegal input location";return 0;}
     else
              return(elem[i]);
}

bool sqlist::insert(int i,int n)//i means subscript,n means the insert elem
{
  int j;//temp subscript
  if (i<0||i>length)
     {
          cout<<"Illegal input location";
          return false;
     }
  else
  if (isfull()) newspace(); //if list has been full,occupy new space
  for (j=length;j>=i+1;j--)
      elem[j]=elem[j-1];//elem next to i arrange new subscript
  length+=1;
  elem[i]=n;//= =、
  return true;         
}

void sqlist::fill()
{
     int j,e;
     cout<<"current list"<
     display();
     cout<<"input elem of the list,over by 0(integer request)"<
     j=length-1;//j subscript last elem
     if (isfull()) newspace();
     while (true)
     {
           cin>>e;
           if ((e!=0)&&(j<(listsize-1)))
                 {
                            j+=1;
                            elem[j]=e;
                            length+=1;
                 }
           else break;
     }
}

int sqlist::del(int p)//p means subscript
{
    int j,temp;
    temp=elem[p];
    for(j=p;j<=length-2;j++) elem[j]=elem[j+1];
    length-=1;
    return temp;
}

void sqlist::display()
{
     int j;
     cout< <<"DISPLY LIST";
     cout< <<"list length/listsize/frist elem address:"< <<"/"< <<"/"< <
     cout<<"list elems"<
     for (j=0;j<=length-1;j++) cout<<"NUMBER"< <<":["< <<"] ";
}

void sqlist::listdelete()
{
     delete []elem;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值