顺序表的应用举例一(A-B)

来源:互联网 发布:python wxpython 安装 编辑:程序博客网 时间:2024/06/04 19:50

顺序表的应用举例

利用顺序表的基本运算,实现如果在顺序表A中出现的元素,在顺序表B中也出现,则将A中该元素删掉。

分析:其实这是求两个表的差集,即A-B。依次检查顺序表B中的每一个元素,如果在顺序表A中也出现,则在A中删掉该元素。程序实现代码如下

#include<stdio.h>  //包含输入输出 头文件 #define LISTSIZE 100typedef int DataType;  //定义元素类型为整型//顺序表类型定义 typedef struct {DataType list[LISTSIZE];int length;}SeqList;#include "SeqList.h"  //包含顺序表实现的文件 void DelElem(SeqList *A, SeqList B); //删除A中出现B的元素的函数声明 void main(){int i, j, flag;DataType e;SeqList A, B;   //声明顺序表A和B InitList(&A);   //初始化顺序表A InitList(&B);   //初始化顺序表B for(i = 1; i <= 10; i++){   //将1~10插入到顺序表A中 if(InitList(&A, i, i) == 0){printf("位置不合法");return; }}for(i = 1,j = 1; j <= 6; i = i + 2,j++){ //插入顺序表B中的6个数 if(InitList(&B, j, i*2) == 0){printf("位置不合法");return; }}printf("顺序表A中的元素:\n");for(i = 1; i <= A.length; i++){  //输出顺序表A中的每个元素 flag = GetElem(A, i, &e);   //返回顺序表A中的每一个元素到e中 if(flag == 1){printf("%4d",e);}}printf("\n");printf("顺序表B中的元素:\n");for(i = 1; i <= B.length; i++){  //输出顺序表B中的每个元素 flag = GetElem(B, i, &e);   //返回顺序表B中的每一个元素到e中 if(flag == 1){printf("%4d",e);}}printf("\n");printf("将在A中出现B的元素删除后A中的元素:\n");DelElem(&A, B);for(i = 1; i <= A.length; i++){  //将在顺序表A中出现的B的元素删除 flag = GetElem(A, i, &e);   //显示输出删除后A中所有元素 if(flag == 1){printf("%4d",e);}}printf("\n");} void DelElem(SeqList *A, SeqList B){  //删除A中出现的B的元素的函数实现 int i,flag,pos;DateType e;for(i = 0; i <= B; i++){flag = GetElem(B, i, &e);  //依次把B中每个元素取出给e if(flag == 1){pos = LocateElem(*A, e);  //在A中找与B中取出的元素e相等的元素 if(pos > 0){DeleteList(A,pos,&e);  //如果找到该元素,将其从A中删除 }}}}


0 0
原创粉丝点击