顺序表的A-A交B
#include<iostream>
#include<malloc.h>
#include<string.h>
#include<stdio.h>
#define max 100
using namespace std;
typedef struct node
{
int data[max];
int len;
} seq;
void init(seq *l)
{
l->len=0;
}
int empty(seq l)
{
if(l.len==0)
{
cout<<"线性表为空!";
return 1;
}
else
return 0;
}
int getelem(seq l,int i,int *e)
{
if(empty(l))
{
printf("线性表为空呢!");
exit(-1);
}
int j=0;
if(i<0||i>l.len)
{printf("位置不合法");
}
*e=l.data[i-1];
return 1;
}
int located(seq l,int e)
{
for(int i=0;i<l.len;i++)
{
if(e==l.data[i])
return i;
else
return 0;
}
}
int insert(seq *l,int i,int e)
{
if(i<1||i>l->len+1)
{
printf("位置不合法!");
return 0;
}
else if(l->len >= max)
{
printf("数量错误,顺序表溢出!");
return 1;
}
else
{
int j=0;
for(j=l->len;j>=i;j--)
{
l->data[j]=l->data[j-1];
}
l->data[i-1]=e;
l->len++;
}
return 1;
}
int del(seq *l,int i,int *e)
{
if(i<0||i>l->len)
{
printf("位置不合法!\n");
exit(-1);
}
else if(l->len<=0)
{
printf("顺序表已空");
return 0;
}
else
{ *e=l->data[i-1];
for(int j=i;j<=l->len;j++)
{
l->data[j]=l->data[j+1];
}
l->len--;
}
return 1;
}
int length(seq l)
{
return l.len;
}
int main()
{
int i,j,k;
seq A,B;int e;
init(&A);
init(&B);
for(int i=1;i<=10;i++)
{
insert (&A,i,i);
}
for(int i=1;i<=A.len-1;i++)
{
cout<<A.data[i]; cout<<" ";
}
cout<<endl;
for(int j=0,i=1;j<20;i++,j=j+2)
{
insert(&B,i,j+1);
}
for(int i=1;i<=B.len-1;i++)
{
cout<<B.data[i]; cout<<" ";
}
cout<<endl;
for(int j=0;j<=B.len;j++)
{
for(int i=0;i<=A.len;i++)
{
if(A.data[i]==B.data[j])
{
del(&A,i,&e);
}
}
}
for(int i=0;i<=A.len-1;i++)
{
cout<<A.data[i];cout<<" ";
}
return 0;
}