第三周项目4-顺序表应用(2)
2015-09-25 09:10
225 查看
<span style="font-size:14px;">烟台大学计算机与控制工程学院 文件名称:顺序表应用(2) 作 者:杨惠娟 完成日期:2015年9月25日 版 本 号:v1.0 问题描述:定义一个采用顺序结构存储的线性表,设计算法完成下面的工作: 将所在奇数移到所有偶数的前面,要求算法的时间复杂度为O(n),空间复杂度为O(1)。 输入描述: 若干数据 。 程序输出: 将数据为奇数的放到偶数的左边。</span>
代码:
(1).奇数放到偶数左边的代码:
#include "list.h" #include <stdio.h> //移动结束后,奇数居左,偶数居右 void move(SqList *&L) { int i=0,j=L->length-1; ElemType tmp; while (i<j) { while ((i<j) && (L->data[j]%2==0)) //从右往左,找到第一个奇数(偶数就忽略不管) j--; while ((i<j) && (L->data[i]%2==1)) //从左往右,找到第一个偶数(奇数就忽略不管) i++; if (i<j) //如果未到达“分界线”,将右边的奇数和左边的偶数交换 { tmp=L->data[i]; L->data[i]=L->data[j]; L->data[j]=tmp; } } //待循环上去后,继续查找,并在必要时交换 }
(2).main函数:
<span style="color:#666666;">int main() { SqList *sq; ElemType a[10]= {5,8,7,0,2,4,9,6,7,3}; CreateList(sq, a, 10); printf("操作前 "); DispList(sq); move(sq); printf("操作后 "); DispList(sq); return 0; </span>
运行结果:
知识点总结:
线性表元素的查找与变换。
相关文章推荐
- C#获取本机IPusing System.Net;
- 黑马程序员--IO(2)
- 性能测试指标及常用的监控工具
- UDP广播搜索局域网设备,返回mac地
- Oracle的Opatch升级 11.2.0.4.0 到 11.2.0.4.7
- Android实战简易教程<六>(各种对话框Dialog用法研究大全)
- Tool类(Leap::Tool)和ToolList类(Leap::ToolList)
- 第4周项目2- 建设“单链表”算法库
- button点击图标改变方法
- Android实战简易教程<五>(ListView用法研究)
- MLA Handbook for Writers of Research Papers笔记
- 秋季学期阅读计划
- 第四周项目2-建设“单链表”算法库
- DataTable数据分页
- 第四周项目3—单链表应用
- 查看服务器用户登陆情况
- iPhone上关于相机拍照的图片的旋转问题
- 【iOS架构】iOS应用架构概述
- Xcode自带SVN及git使用说明
- Linux下各种桌面环境开启字体完全渲染(hintfull)的工具和方法