數組的實質

數組的本質就是順序表,接下來用順序表來創建數組.

#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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章