数据结构之顺序表的基本操作(C++)

#include<iostream>
using namespace std; 
#define increment 10

class sqlist{
private:
    int *elem;
    int listsize;
    int length;
  public:
    sqlist(int n);
    ~sqlist();
    void sqlistn(int n);
    void print();
    void insertlist(int i,int e);
    void deletelist(int i,int &e);
    int locatex(int x);
    void turn();
    void mergelist(sqlist &la,sqlist &lb);
};
sqlist::sqlist(int n){
     elem = new int[n];
     listsize=n;
      length=0;
}
sqlist::~sqlist(){
    delete [] elem;
     listsize=0;
    length=0;
}
void sqlist::sqlistn(int n){
    for(int i=0;i<n;i++)
       cin>>elem[i];
      length = n;
}
void sqlist::print(){
    for(int i=0;i< length;i++)
        cout<<  elem[i]<<" ";
    cout<<endl;
 }

void sqlist::insertlist(int i,int e){
    if(i<1 || i>  length+1) return;
    if(   length>=  listsize){
    int *elem1=new int[listsize+increment];
    for(int i=0;i<length;i++)
        elem1[i]= elem[i];
      elem = elem1;
      listsize+=increment;
    }
    int *p=& elem[length-1],*q = & elem[i-1];
    for(;p>=q;p--) *(p+1) = *p;
    *q = e;
      length++;
}
 
void sqlist::deletelist(int i,int &e){
    if(i<1||i>  length) return;
    int *p = & elem[i-1],*q=& elem[length-1];
    e = *p;
    for(;p<=q;p++) *p = *(p+1);
      length--;
   }

void sqlist::turn(){
    int *p=  elem,*q=& elem[length-1];
    int *temp=new int;
    for( ;p<q;p++,q--){
        *temp=*p;
        *p=*q;
        *q=*temp;
    }
   
 }

int sqlist::locatex(int x){
    for(int i=0;i<length;i++)
       if(x==elem[i])  return i;
    return -1;

void sqlist::mergelist(sqlist &la,sqlist &lb){
    int *pa = la.elem;
    int *pb = lb.elem;
    int *pc=elem;
       int *pa_last=&la.elem[la.length-1];
    int *pb_last=&lb.elem[lb.length-1];
    while (pa<=pa_last && pb<=pb_last)
        if(*pa<=*pb) *pc++ = *pa++;
        else *pc++= *pb++;       
    while(pa<=pa_last)
       *pc++ = *pa++;
    while(pb<=pb_last)
       *pc++ = *pb++;
    length=la.length+lb.length;
}
int main(){
    int e;
    sqlist l(20);
    l.sqlistn(10);
    l.print();
    l.insertlist(5,100);
    l.print();
    l.deletelist(7,e);
    l.print();
    l.turn();
    l.print();
    sqlist la(10),lb(10),lc(20);
    la.sqlistn(5);
    lb.sqlistn(5);
    la.print();
    lb.print();
    lc.mergelist(la,lb);
    lc.print();
    
 }

猜你喜欢

转载自blog.csdn.net/muhehhh/article/details/81263283