实现顺序表多种操作(removeall、冒泡排序等)
来源:互联网 发布:看电视直播的软件 编辑:程序博客网 时间:2024/05/23 20:48
在上一篇实现顺序表基本操作的基础上,继续实现下面几种操作:
1.删除顺序表中所有的指定的值
void seqlistRemoveAll(seqlist* seq, seqType to_delete);
2.获取顺序表元素个数
size_t seqlistSize(seqlist* seq);
3.判定顺序表是否为空
int seqlistEmpty(seqlist* seq);
4.冒泡排序
void seqlistBubbleSort(seqlist* seq);
实现函数:
void seqlistRemoveAll(seqlist* seq, seqType to_delete)//删除元素表中所有指定值{ assert(seq);//判断指针是否为空 size_t i = 0; if (seq->size == 0) { printf("线性表为空\n"); return; } for (i = 0; i < seq->size; i++) { if (seq->arr[i] == to_delete) { size_t j = i;//j=1 while ( j<seq->size )//j=1~5 { seq->arr[j] = seq->arr[j + 1]; j++;//j=2 } seq->size--;//size=5 i--;//i=0 } }}size_t seqlistSize(seqlist* seq)//获取元素表个数{ assert(seq);//判断指针是否为空 if (seq->size == NULL) { printf("元素表已为空\n"); } size_t count= 1; while (count <seq->size) { count++; } return count;}int seqlistEmpty(seqlist* seq)//判定顺序表是否为空,为空返回1,否返回0{ assert(seq); if (seq->size == NULL) return 1; else return 0;}void seqlistBubbleSort(seqlist* seq)//对顺序表进行冒泡排序{ assert(seq); if (seq->size == NULL) return; int i = 0; for (; i < seq->size; i++) { int j = 0; for (; j < seq->size -i- 1; j++) { if (seq->arr[j]>seq->arr[j + 1]) { seqType tmp = seq->arr[j]; seq->arr[j] = seq->arr[j + 1]; seq->arr[j + 1] = tmp; } } }}
对函数进行测试:
void Test_RemoveAll()//删除所有指定元素{ print_seqlist("*****在顺序表中删除所有指定元素*****"); seqlist seq; seqlistInit(&seq); seqlistPushBack(&seq, 2); seqlistPushBack(&seq, 2); seqlistPushBack(&seq, 3); seqlistPushBack(&seq, 4); seqlistPushBack(&seq, 2); seqlistPushBack(&seq, 5); seqlistPushBack(&seq, 6); seqlistPushBack(&seq, 7); PrintSeqList(&seq); seqlistRemoveAll(&seq, 2); PrintSeqList(&seq);}void Test_Size()//获取元素表个数{ print_seqlist("*****获取顺序表元素个数*****"); seqlist seq; seqlistInit(&seq); seqlistPushBack(&seq, 2); seqlistPushBack(&seq, 3); seqlistPushBack(&seq, 4); seqlistPushBack(&seq, 5); seqlistPushBack(&seq, 6); seqlistPushBack(&seq, 7); PrintSeqList(&seq); size_t count = seqlistSize(&seq); printf("元素表个数为%d:\n", count);}void Test_Empty()//判断元素表是否为空{ print_seqlist("*****判断顺序表是否为空*****"); seqlist seq; seqlistInit(&seq); seqlistPushBack(&seq, 2); seqlistPushBack(&seq, 3); seqlistPushBack(&seq, 4); seqlistPushBack(&seq, 5); int i = seqlistEmpty(&seq); printf("ecpect 0,actual :%d\n", i);}void Test_BubbleSort(){ print_seqlist("*****顺序表冒泡排序*****"); seqlist seq; seqlistInit(&seq); seqlistPushBack(&seq, 8); seqlistPushBack(&seq, 4); seqlistPushBack(&seq, 3); seqlistPushBack(&seq, 9); seqlistPushBack(&seq, 14); seqlistPushBack(&seq, 5); PrintSeqList(&seq); seqlistBubbleSort(&seq); printf("冒泡排序后:\n"); PrintSeqList(&seq);}
图片测试结果:
之前有关顺序表的博客:
http://blog.csdn.net/getitstarted/article/details/78826402
阅读全文
0 0
- 实现顺序表多种操作(removeall、冒泡排序等)
- 实现冒泡排序、希尔排序等多种算法示例
- 双向链表操作(逆置三种实现以及 冒泡排序 )
- 顺序表上实现冒泡排序及其优化
- 回调函数实现冒泡法的多种排序
- 冒泡排序的多种方法
- 冒泡排序的多种写法
- 用JS实现冒泡排序、顺序排序、 折半查找
- 冒泡排序法(由小到大顺序):
- 冒泡排序(链表实现)
- c++ 实现动态顺序表(拷贝构造 赋值运算符重载等操作)
- c++ 实现动态顺序表(拷贝构造 赋值运算符重载等操作)
- 顺序表静态与动态实现及基本的操作(增删查改等)
- 从大到小排序(区分顺序排序和冒泡排序)
- 顺序表创建以及查找排序算法(含有顺序查找算法、带哨兵站顺序查找、折半查找算法、冒泡排序)的C++实现在vs2013环境下实现
- 顺序表的冒泡排序算法及二分法查找代码实现
- 算法复习--------------基本算法:顺序查找,选择排序,冒泡排序算法等简单算法
- 链表实现冒泡排序
- JVM GC调优一则--增大Eden Space提高性能
- 设计一个鼠标点击速度比赛游戏。 *(1)显示一个按钮和文本框。 *(2)文本框显示鼠标点击次数
- 《穿越计算机的迷雾》第二版说明
- Overriding equals() of Object (Java)
- Oracle 存储过程内创建存储过程、函数
- 实现顺序表多种操作(removeall、冒泡排序等)
- 网址
- nginx安装配置
- Effective C++之四:设计与声明
- CarbonData编译、安装和集成Spark 2.2
- 可持久化并查集
- 消息队列使用的四种场景介绍
- MNIST
- maven -install 报错:实际参数列表和形式参数列表长度不同