自定義順序表,C 語言實現代碼如下:
typedef struct Table{ int * head;//聲明了一個名為head的長度不確定的數組,也叫“動態數組” int length;//記錄當前順序表的長度 int size;//記錄順序表分配的存儲容量 }table;
注意,head 是我們聲明的一個未初始化的動態數組,不要只把它看做是普通的指針。
接下來開始學習順序表的初始化,也就是初步建立一個順序表。建立順序表需要做如下工作:
- 給 head 動態數據申請足夠大小的物理空間;
- 給 size 和 length 賦初值;
因此,C 語言實現代碼如下:
#define Size 5 //對Size進行宏定義,表示順序表申請空間的大小 table initTable(){ table t; t.head=(int*)malloc(Size*sizeof(int));//構造一個空的順序表,動態申請存儲空間 if (!t.head) //如果申請失敗,作出提示並直接退出程序 { printf("初始化失敗"); exit(0);//強制退出 } t.length=0;//空表的長度初始化為0 t.size=Size;//空表的初始存儲空間為Size return t; }
擴展:malloc和free 解釋: https://www.cnblogs.com/CheeseIce/p/10846449.html
添加一些元素,C 語言實現代碼如下:
#include <stdio.h> #include <stdlib.h> #define Size 5 typedef struct Table{ int * head; int length; int size; }table; table initTable(){ table t; t.head=(int*)malloc(Size*sizeof(int)); if (!t.head) { printf("初始化失敗"); exit(0);//強制退出 } t.length=0; t.size=Size; return t; } //輸出:順序表中元素的函數 void displayTable(table t){ for (int i=0;i<t.length;i++) { printf("%d ",t.head[i]); } printf("\n"); } int main(){ table t=initTable(); //添加:向順序表中添加元素 for (int i=1; i<=Size; i++) { t.head[i-1]=i; t.length++; } printf("順序表中存儲的元素分別是:\n"); displayTable(t); return 0; }
