📄 24-list2.c
字号:
#include<stdio.h>
#include<stdlib.h>
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
#define null 0
typedef struct{ /*线性表的动态分配顺序存储结构,书上22页*/
int *elem;
int length;
int listsize;
}SqList;
void InitList_Sq(SqList *L) /*顺序表的初始化操作,书上23页*/
{
L->elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int));
if(!L->elem) exit(-1);
L->length = 0;
L->listsize = LIST_INIT_SIZE;
}
void DeleteList_Sq(SqList *L,int e) /*删除LA里的元素e,e是LB和LC里公有元素,书上24页*/
{
int i=0;
for(i=0;i<L->length;i++)
{
if(L->elem[i]>e)
break;
else if(L->elem[i]<e)
continue;
else
{
int *p,*q;
p=&(L->elem[i]);
q=&(L->elem[L->length-1]);
for(++p;p<=q;++p) *(p-1)=*p;
--L->length;
}
}
}
void InputNumberList_Sq(SqList *L,int num) /*从键盘输入集合元素*/
{
int i;
L->length=num;
for(i=0;i<L->length;i++)
scanf("%d",&L->elem[i]);
}
void PrintList_Sq(SqList *L) /*输出集合元素*/
{
int i;
if(L->length!=0)
{
for(i=0;i<L->length;i++)
printf("%d ",L->elem[i]);
}
else
printf("NULL");
}
void SearchSame_Sq(SqList *LA,SqList *LB,SqList *LC)
/*查找LB和LC里的公有元素,并从LA里删除*/
{
int j,k;
int lb,lc,e;
for(j=0;j<LB->length;j++)
{
lb=LB->elem[j];
for(k=0;k<LC->length;k++)
{
lc=LC->elem[k];
if(lb<lc)
break;
else if(lb>lc)
continue;
else
{e=lb;
DeleteList_Sq(LA,e);
}
}
}
}
void main()
{
int num1,num2,num3;
SqList* LA,*LB,* LC;
InitList_Sq(LA);
InitList_Sq(LB);
InitList_Sq(LC);
printf("The Number Of LA:");
scanf("%d",&num1);
printf("Input LA:");
InputNumberList_Sq(LA,num1);
printf("\nThe Number Of LB:");
scanf("%d",&num2);
printf("Input LB:");
InputNumberList_Sq(LB,num2 );
printf("\nThe Number Of LC:");
scanf("%d",&num3);
printf("Input LC:");
InputNumberList_Sq(LC,num3);
SearchSame_Sq( LA,LB,LC);
printf("\nOUT:");
PrintList_Sq(LA);
getch();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -