用陣列組成的連結串列--靜態連結串列
阿新 • • 發佈:2019-01-07
C語言有指標,可以按照上次那個方法做一下,但JAVA,C#,Basic呢?怎麼辦?前輩們真是聰明,用陣列描述指標。這個陣列由兩部分組成,一個位DATA域,一個位CUR指標域
線性表的靜態連結串列儲存結構
typedef struct
{
ElemType data;
int cur; /* 遊標(Cursor) ,為0時表示無指向 */
} Component,StaticLinkList[MAXSIZE];
靜態連結串列的插入
/* 在L中第i個元素之前插入新的資料元素e */ Status ListInsert(StaticLinkList L, int i, ElemType e) { int j, k, l; k = MAXSIZE - 1; /* 注意k首先是最後一個元素的下標 */ if (i < 1 || i > ListLength(L) + 1) return ERROR; j = Malloc_SSL(L); /* 獲得空閒分量的下標 */ if (j) { L[j].data = e; /* 將資料賦值給此分量的data */ for(l = 1; l <= i - 1; l++) /* 找到第i個元素之前的位置 */ k = L[k].cur; L[j].cur = L[k].cur; /* 把第i個元素之前的cur賦值給新元素的cur */ L[k].cur = j; /* 把新元素的下標賦值給第i個元素之前元素的ur */ return OK; } return ERROR; }
靜態連結串列的元素刪除
/* 刪除在L中第i個數據元素 */ Status ListDelete(StaticLinkList L, int i) { int j, k; if (i < 1 || i > ListLength(L)) return ERROR; k = MAXSIZE - 1; for (j = 1; j <= i - 1; j++) k = L[k].cur; j = L[k].cur; L[k].cur = L[j].cur; Free_SSL(L, j); return OK; }