您的位置:首页 > 其它

数组的实质

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: