数据结构-完整链表&顺序表

#include<iostream.h>
#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;
}
void main(void){
    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();
	
 }


#include<iostream.h>
typedef struct lnode{
  int data;
  lnode *next;
}lnode,*linklist;
class list{
  lnode *head;
  public:
   list();
   ~list();
   void initlistn(int n);
   void print();
   void insertlist(int i,int e);
   void deletelist(int i,int &e);
   int searchx(int x);
};
list::list(){
 head=new lnode;
 head->next=NULL;
}
list::~list(){
  lnode *p=head->next;
  
  while(p){
    delete head;
    head=p;
    p=p->next;
  }
 delete head;
}
void list::initlistn(int n){
  lnode *s=head,*p;
  for(int i=0;i<n;i++){
   p=new lnode;
   cin>>p->data;
   p->next=NULL;
   s->next=p;
   s=p;
 }
void list::print(){
  lnode *p=head->next;
  while(p){
    cout<<p->data<<' ';
    p=p->next;
  }
  cout<<endl;
}

int list::searchx(int x){
   lnode *p=head->next;
   while(p){
     if(p->data==x)return 1;
     p=p->next;

   }
   return 0;
 }

void list::insertx(int x){
  lnode *pr=head,*p=head->next;
  while(p&&p->data<=x){pr=p;p=p->next;}
  lnode *s=new lnode;
  s->data=x;
  s->next=p;
  pr->next=s;
}

猜你喜欢

转载自blog.csdn.net/qq_40916453/article/details/82962128