4.2.9 按照位置修改数据
//按照位置修改数据 void SeqlistUpdateByPos(seqlist *st,int p,DataType value) { if(p < 0 || p > st->pos) { printf("修改失败,位置有误!\n"); return; } st->data[p] = value; printf("按照位置修改数据成功!\n"); }
4.2.10 按照数据查找位置
//按照数据查找位置 int SeqlistSearchPos(seqlist *st,DataType value) { int i; for(i = 0 ; i <= st->pos;i++) { if(st->data[i] == value) { printf("按照数据查找位置成功!\n"); return i; } } printf("查找失败,数据%d不存在\n",value); return -1; }
4.2.11 按照位置查找数据
//按照位置查找数据 DataType SeqlistSearchData(seqlist *st,int p) { if(p < 0 || p > st->pos) { printf("按照位置查找数据失败,位置有误!\n"); return (DataType)-1; } printf("按照位置查找数据成功!\n"); return st->data[p]; }
练习:
1.删除重复数据
(将先出现的数据和后面的数据进行对比,如果有重复的将后面的数据删除)
s1: 1 2 2 2 1 1 3 4 2 4 5 4 1
。。。。。
s1:1 2 3 4 5
//删除重复数据 void SeqlistDeleteRepeat(seqlist *st) { int i,j; for(i = 0 ; i < st->pos;i++) { for(j = i + 1;j <= st->pos;j++) { if(st->data[i] == st->data[j]) { //按照位置删除j的数据 SeqlistDeleteByPos(st,j); //j--目的防止删除位置的数据不作比较 j--; } } } }
2.合并表
(将s2里面与s1不一样的数据保存在s1的后面)
s1: 1 2 3 4 5
s2: 1 3 5 7 9
…
s1:1 2 3 4 5 7 9
//合并表 void SeqlistMerge(seqlist *s1,seqlist *s2) { int i; for(i = 0 ; i <= s2->pos;i++) { if(SeqlistSearchPos(s1,s2->data[i]) == -1) { SeqlistInsert(s1,s2->data[i]); } } }