数组的实质

数组的本质就是顺序表,接下来用顺序表来创建数组.

#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[n]);

    //获取指定位置元素的值
    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;
}


发布了78 篇原创文章 · 获赞 12 · 访问量 9万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章