尾部附加源码 增加数据
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);//此方法是删除创建的顺序表}相信大家都能看懂,不多说了,附上源码。 点击下载
新闻热点
疑难解答