順序表的建立和初始化過程詳解(C語言實現)
阿新 • • 發佈:2018-12-16
順序表存放資料的特點和陣列這種資料型別完全吻合,因此順序表的實現使用的是陣列。需要注意的是,使用陣列實現順序表時,一定要預先申請足夠大的記憶體空間,避免因儲存空間不足,造成資料溢位,導致不必要的程式錯誤甚至崩潰。
在建立順序表時,除了預先申請記憶體空間,還需要實時記錄順序表的長度和順序表本身申請的記憶體大小,便於後期對順序表中的資料元素進行調取。因此在建立順序表之前,要自定義順序表中單個結點的結構,實現程式碼如下:
輸出結果:
在建立順序表時,除了預先申請記憶體空間,還需要實時記錄順序表的長度和順序表本身申請的記憶體大小,便於後期對順序表中的資料元素進行調取。因此在建立順序表之前,要自定義順序表中單個結點的結構,實現程式碼如下:
typedef struct Table{ int * head;//聲明瞭一個名為head的長度不確定的陣列,也叫“動態陣列” int length;//記錄當前順序表的長度 int size;//記錄順序表分配的儲存容量 }table;
建立順序表的過程,也就是在預先申請記憶體空間的同時,給變數 size 和 length 賦初值的過程,其實現程式碼為:
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; }
順序表建立完成後,即可使用順序表儲存資料,也就是對順序表進行初始化的過程,若使用剛建立的順序表儲存 {1,2,3,4},其完整實現程式碼為:
#include <stdio.h> #include <stdlib.h> #define Size 4 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 t1=initTable(); for (int i=1; i<=Size; i++) { t1.head[i-1]=i; t1.length++; } printf("順序表為:\n"); displayTable(t1); return 0; }
順序表為: 1234