数组的实质
2016-04-19 10:02
274 查看
数组的本质就是顺序表,接下来用顺序表来创建数组.
#include <iostream> using namespace std; #define OK 1 #define ERROR 0 #define OVERFLOW -1 #define List_INIT_SPACE 100 //存储控件初始分配量 typedef int ElementType; //指定顺序表中数据类型 typedef struct { ElementType *elem; int listsize; }List; #pragma mark - 初始化一个空顺序表,初始顺序表长度为100 /****--------------------------------------------------------****/ //函数名: ListInit(List &L) //参数: (传入) List L, 顺序表结构体 L, 存储线性表相关消息(&相当于传入 L 的地址) //返回值: int 型,返回1标识创建成功,0表示失败 //功能: 初始化一个空顺序表 /****--------------------------------------------------------****/ int listInit(List &L) { //在内存中分配空间 //L.elem = (ElementType*)malloc(List_INIT_SPACE * sizeof(ElementType)); L.elem = new ElementType[List_INIT_SPACE]; //存储分配失败 if (!L.elem) { exit(OVERFLOW); } //遍历顺序表, 顺序表的所有元素全部赋值为0 for (int i = 0; i < List_INIT_SPACE; i++) { L.elem[i] = 0; } //初始存储容量 L.listsize = List_INIT_SPACE; return OK; } #pragma mark - 获取顺序表指定位置的元素值 /****--------------------------------------------------------****/ //函数名: listGetValue(List &L, int n) //参数: (传入) List &L 顺序表 // (传入) int n 要获取元素的位置下标 //返回值: 要获取的元素 //功能: 获取顺序表指定位置的元素值 //备注: i的合法取值为0<= i < 线性表的长度 /****--------------------------------------------------------****/ ElementType listGetSpecifiedValue(List &L, int n) { //定义线性表指针 ElementType *p = &(L.elem ); //获取指定位置元素的值 return *p; } #pragma mark - 给顺序表指定位置元素赋值 /****--------------------------------------------------------****/ //函数名: listAssignValue(List &L,int i, int value) //参数: (传入) List &L 顺序表 // (传入) int i 赋值位置下标 // (传入) int value 指定位置要赋予的值 //功能: 给顺序表指定位置元素赋值 //备注: i的合法取值为0<= i < 线性表的长度 /****--------------------------------------------------------****/ void listAssignValue(List &L, int i, ElementType value) { //定义线性表指针 ElementType *p = &(L.elem[i]); *p = value; } #pragma mark - 主函数 /****-----------------------测试程序--------------------------****/ int main(int argc, const char * argv[]) { //实参定义 List list; //初始化顺序表/数组 listInit(list); //给顺序表指定位置赋值 listAssignValue(list, 4, 23); //获取顺序表指定位置的元素值 ElementType value = listGetSpecifiedValue(list, 4); cout << value << endl; return 0; }
相关文章推荐
- d3js几个常用布局
- RHEL/CentOS and Debian/Ubuntu上使用Nginx安装odoo9
- QrCode的实现二维码功能
- iOS9 UIStackView 简介
- 如何使用VS 2010进行远程调试:Attach
- C++ 实现堆排序 归并排序 快速排序
- 白话经典算法系列之四 直接选择排序及交换二个数据的正确实现
- 如何搭建一个git服务器?
- 装了双系统怎么删除一个
- ios 接入sdk注意事项
- ArcGIS Server密码丢失
- Yii数据库操作增删改查-[增加\查询\更新\删除 AR模式]
- 【C/PY】浮点型 float
- 织梦如何修改图片水印
- 【LeetCode】LeetCode——第5题: Longest Palindromic Substring
- Zxing方式生产二维码方法
- Twitter的分布式自增ID算法snowflake (Java版)
- Servlet的生命周期
- OpenCV学习笔记(三)—— OpenCV编程起点
- HTTPS