首页 > 学院 > 开发设计 > 正文

顺序表的交并补 增删查

2019-11-06 06:28:29
字体:
来源:转载
供稿:网友

尾部附加源码 增加数据

Status ListInsert_Sq(SqList &L,int i,ElemType e){ if(L.length == LIST_INIT_SIZE || i<1||i>L.length+1){ return ERROR; } ElemType *q,*p; p = &(L.elem[i-1]); /**这个可以有多种方法实现**/ q = L.elem + L.length; for(q;q>p;q--){ *q = *(q-1); } L.elem[i-1] = e; L.length++;}

删除数据

Status ListDelete_Sq(SqList &L,int i,ElemType &e){ if(L.length == LIST_INIT_SIZE || i<1||i>L.length+1){ return ERROR; } ElemType *p,*q; p = &(L.elem[i-1]);//p为被删除元素的位置 e = *p;//将被删除元素的值给e q = L.elem + L.length -1;//表中最后一个元素 //这里从被删除的元素开始将后面的元素依次向前移动 for(++p;p<=q;++p){ *(p-1) = *p; } //这里也可以换种写法 // for(p;p<=q;++p){*p = *(p+1) } --L.length; return OK;}

查找数据

int LocateElem_Sq(SqList L, ElemType &e){ for(int i=0;i<L.length;i++){ if(L.elem[i] == e){ return i+1; } } return 0;}

获取数据

Status GetElem_Sq(SqList L,int i,ElemType &e){ if(L.length == LIST_INIT_SIZE || i<1||i>L.length+1){ return ERROR; } e = L.elem[i-1]; return OK;}

两个表的交集

void Mix_Sq(SqList A,SqList B){ ElemType e; SqList C; InitList_Sq(C); int j = 0; for(int i = 0; i<GetLength_Sq(B);i++){ GetElem_Sq(B,i+1,e); if(LocateElem_Sq(A,e)) ListInsert_Sq(C,++j,e); } show(C);//此方法是展示结果 DestroyList_Sq(C);//此方法是删除创建的顺序表}

两个表的并集

void Differ_Sq(SqList A,SqList B){ SqList C; InitList_Sq(C); ElemType e; int j = 0; for(int i=0;i<GetLength_Sq(A);i++){ GetElem_Sq(A,i+1,e); if(!LocateElem_Sq(B,e)) ListInsert_Sq(C,++j,e); } show(C);//此方法是展示结果 DestroyList_Sq(C);//此方法是删除创建的顺序表}

两个表的差集

void Differ_Sq(SqList A,SqList B){ SqList C; InitList_Sq(C); ElemType e; int j = 0; for(int i=0;i<GetLength_Sq(A);i++){ GetElem_Sq(A,i+1,e); if(!LocateElem_Sq(B,e)) ListInsert_Sq(C,++j,e); } show(C);//此方法是展示结果 DestroyList_Sq(C);//此方法是删除创建的顺序表}

相信大家都能看懂,不多说了,附上源码。 点击下载


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表