数据结构与算法1:数组1
来源:互联网 发布:怎么查看服务器域名 编辑:程序博客网 时间:2024/06/05 10:03
数组是由一段连续固定大小的内存构成的存储结构,这样决定数组具备几个特性:
(1)、存储空间固定,使用前申请预估规格大小。当然我们也可以实现一个动态数组,按照一定步长延长数组,但是不可避免需要拷贝。
(2)、插入删除需要移动元素,因为存储的元素是连续的。当然也可以设计一种存储结构,可以实现间断存储,但是这样需要增加额外的数据段描述是否存在数据。
(3)、查找需要使用数组下标进行遍历,也带来好处是可以用下标常数时间获取到。
参考:http://blog.csdn.net/zhangxiangdavaid/article/details/25057811 约瑟夫问题数组解法稍微进行修改
需要注意的几个地方是:数组遍历到最后一个值需要从头开始
#include <stdio.h>#include <stdlib.h>int next(int * iArray, int iPos, unsigned int uiNum, unsigned int uiJumpNum){ int i = 0; while(1) { iPos = (iPos + 1)%uiNum; if(iArray[iPos] == 0) i++; if(i == uiJumpNum) return iPos; }}int yuesehu(unsigned int uiNum, unsigned int uiJumpNum){ int *iArray; int iPos; int iCount = uiNum; iArray = (int *)malloc(sizeof(int) * uiNum); if (NULL == iArray) { return 1; } memset(iArray, 0, sizeof(int) * uiNum); printf("out:\n"); iPos = uiJumpNum % uiNum - 1; //因为计算的时第几位,所以数组下表后退一位 while(iCount > 1) { printf("%d ", iPos+1); //按照人正常的理解,数组下标加1表示第几位 iArray[iPos] = 1; iCount--; iPos = next(iArray, iPos, uiNum, uiJumpNum); } printf("\n"); free(iArray); return iPos + 1; //按照人正常的理解,数组下标加1表示第几位}int main(){ unsigned int uiNum,uiJumpNum; int iLast; printf("enter person num:"); scanf("%d", &uiNum); printf("\n"); printf("enter jump num:"); scanf("%d", &uiJumpNum); printf("\n"); if (uiNum == 0 || uiJumpNum == 0) return 1; iLast = yuesehu(uiNum, uiJumpNum); printf("Last: %d\n", iLast); return 0;}
阅读全文
0 0
- 数据结构与算法1:数组1
- 算法与数据结构 - 数组
- 数据结构与算法:数组
- 算法与数据结构基础1:C++实现动态数组
- 数据结构与算法(1、数组和链表)
- 数据结构与算法(1)
- 算法与数据结构--(1)
- 数据结构与算法-1
- 数据结构与算法1
- 数据结构与算法分析笔记与总结(java实现)--数组1:二维数组中的查找
- 数据结构与算法系列---数组
- Java数据结构与算法--数组
- 【数据结构与算法】一 数组
- 数据结构与算法之数组
- Javascript数据结构与算法---数组
- 【数据结构与算法01】数组
- 二、数据结构与算法--数组
- 【数据结构与算法分析】数组
- 82. Remove Duplicates from Sorted List II。
- unity shader 轮廓外发光(光晕)
- 中国剩余定理证明
- QT程序与html交互(三)------QT WebChannel JavaScript API
- 广搜之抓住那头牛
- 数据结构与算法1:数组1
- Failed to resolve: com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+
- csr_matrix
- SQLAlchemy_定义(一对一/一对多/多对多)关系
- [转]一个中高级PHP工程师所应该具备的能力
- 树形索引(B-树查找、插入、删除)
- 文章标题
- my idea about visitor pattern
- Linux下GCC编译器链接任意目录下库文件(解决错误“/usr/bin/ld: cannot find -lxxx”)