數組的本質就是順序表,接下來用順序表來創建數組.
#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;
}