1. DS单链表
class listnode
{
public:
int data;
listnode*next;
listnode()
{
next=NULL;
}
};
class linklist
{
public:
listnode*head;
int len;
linklist()
{
head=new listnode();
len=0;
}
~linklist()
{
listnode*p,*q;
p=head;
while(p!=NULL)
{
q=p;
p=p->next;
delete q;
}
len=0;
head=NULL;
}
void LL_display()
{
listnode*p;
p=head->next;
while(p)
{
cout<<p->data<<' ';
p=p->next;
}
cout<<endl;
}
int LL_get(int i) //获取数据
{
if(i>len||i<1)
{
return 0;
}
listnode*p=head->next;
for(int j=1;j<i;j++)
{
if(p!=NULL)
{
p=p->next;
}
}
return p->data;
}
int LL_insert(int i,int item) //插入
{
if(i>len+1||i<1)
{
return 0;
}
listnode*p=head;
listnode*cur;
listnode*now=new listnode();
cur=head->next;
for(int j=1;j<i;j++)
{
if(cur!=NULL)
{
p=cur;
cur=cur->next;
}
}
now->data=item;
p->next=now;
now->next=cur;
len++;
return 1;
}
int LL_del(int i) //删除结点
{
if(i>len||i<1)
{
return 0;
}
listnode*p=head;
listnode*cur=head->next;
for(int j=1;j<i;j++)
{
if(cur!=NULL)
{
p=cur;
cur=cur->next;
}
}
p->next=cur->next;
len--;
return 1;
}
int myswap(int i1,int i2) //交换结点
{
if(i1<1||i2<1||i1>len||i2>len)
{
return 0;
}
listnode*p=head;
listnode*cur=head->next;
listnode*cur2=head->next;
listnode*now;
listnode*q=head;
for(int j=1;j<i1;j++)
{
if(cur!=NULL)
{
p=cur;
cur=cur->next;
}
}
for(int j=1;j<i2;j++)
{
if(cur2!=NULL)
{
q=cur2;
cur2=cur2->next;
}
}
now=cur2->next;
cur2->next=cur->next;
p->next=cur2;
cur->next=now;
q->next=cur;
return 1;
}
int LL_merge(listnode *La,listnode*Lb) //链表合并
{
listnode *Lc=new listnode;
if(La==NULL||Lb==NULL)return 0;
listnode*p=La->next;
listnode*q=Lb->next;
listnode*w=La;
delete Lb;
Lb=NULL;
while(p&&q)
{
if(p->data<=q->data)
{
w->next=p;
p=p->next;
w=w->next;
}
else
{
w->next=q;
q=q->next;
w=w->next;
}
}
w->next=p?p:q;
return 1;
}
};
2.DS顺序表
class linklist
{
public:
int *data;
int maxlen;
int len;
linklist(int n)
{
len=n;
data=new int[n];
for(int i=0;i<n;i++)
{
cin>>data[i];
}
}
int LL_insert(int i,int item)
{
if(i<0||i>len)
{
return 0;
}
for(int j=len-1;j>=i;j--)
{
data[j+1]=data[j];
}
data[i]=item;
len++;
return 1;
}
int LL_search(int item)
{
for(int i=0;i<len;i++)
{
if(data[i]==item)
{
return i;
}
}
return -1;
}
void display()
{
for(int i=0;i<len-1;i++)
{
cout<<data[i]<<" ";
}
cout<<data[len-1]<<endl;
}
};