#include<stdio.h>
#include<stdlib.h>
#define N 1000
struct list
{
int *arr;
int size;
};
void init_list(struct list *p)
{
int *s;
s=(int *)malloc(N*sizeof(int));
p->arr=s;
p->size=-1;
}
void scanf_list(struct list *p,int e)
{
if(p->size>=N-1)
{
printf("错误\n");
return;
}
p->size++;
p->arr[p->size]=e;
}
void Delete_list(struct list *L,int pos)
{
int i;
if(pos<1||pos>L->size)
{
printf("pos值越界\n");
return;
}
for(i=pos; i<=L->size; i++)
L->arr[i-1]=L->arr[i];
L->size--;
}
void charu_list(struct list *p,int e)
{
if(p->size>=N-1)
{
printf("插入错误\n");
return;
}
p->size++;
p->arr[p->size]=e;
}
void Search(struct list *L,int e)
{
int i;
for(i=0; i<L->size; i++)
{
if(L->arr[i]==e)
{
printf("找到,%d在第%d个位置\n",e,i+1);
return;
}
}
printf("没找到\n");
return;
}
int main()
{
int n,m,i,k,j;
struct list a,b,c,d;
struct list *A,*B,*C,*D;
A=&a;B=&b;C=&c;D=&d;
init_list(A);init_list(B);init_list(C);init_list(D);
printf("输入AB集合元素的个数\n");
scanf("%d%d",&n,&m);
for(i=0;i<n;i++)
{
scanf("%d",&k);
scanf_list(A,k);
}
for(i=0;i<n;i++)
{
scanf("%d",&k);
scanf_list(B,k);
}
printf("输入想在A中插入的数,输入0结束\n");
while(1)
{
scanf("%d",&k);
if(k==0)
break;
scanf_list(A,k);
}
printf("输入想在B中插入的数,输入0结束\n");
while(1)
{
scanf("%d",&k);
if(k==0)
break;
scanf_list(B,k);
}
printf("输入想在A中删除的数的位置\n");
scanf("%d",&k);
Delete_list(A,k);
printf("输入想在B中删除的数的位置\n");
scanf("%d",&k);
Delete_list(B,k);
printf("输入想在A中查找的数\n");
scanf("%d",&k);
Search(A,k);
printf("输入想在B中查找的数\n");
scanf("%d",&k);
Search(B,k);
for(i=0;i<=A->size;i++)
{
D->arr[i]=A->arr[i];
C->arr[i]=A->arr[i];
}
C->size=A->size;
D->size=A->size;
for(i=0;i<=B->size;i++)
for(j=0;j<=A->size;j++)
{
if(B->arr[i]==A->arr[j])
break;
if(j==A->size)
{
scanf_list(C,B->arr[i]);
}
}
for(i=0;i<=B->size;i++)
for(j=0;j<=D->size;j++)
{
if(B->arr[i]==D->arr[j])
Delete_list(B,j+1);
}
printf("A:\n");
for(i=0;i<=A->size;i++)
printf("%d ",A->arr[i]);
printf("\n");
printf("B:\n");
for(i=0;i<=B->size;i++)
printf("%d ",B->arr[i]);
printf("\n");
printf("C:\n");
for(i=0;i<=C->size;i++)
printf("%d ",C->arr[i]);
printf("\n");
printf("D:\n");
for(i=0;i<=D->size;i++)
printf("%d ",D->arr[i]);
printf("\n");
return 0;
}
顺序表的操作
最新推荐文章于 2022-05-07 10:24:11 发布