用一組位址任意的儲存單元存放線性表中的資料元素。
以元素(資料元素的映象) +指標(指示後繼元素儲存位置) = 結點 (表示資料元素 或 資料元素的映象)
以「結點的序列」表示線性表 稱作鍊錶
結點和單鏈表的 c 語言描述:
單鏈表的儲存結構定義 :
typedef struct lnode lnode, *linklist;
linklist l; // l 為單鏈表的頭指標
單鏈表的基本操作:
建立並初始化為空表status initlist(linklist &l)
將表l置空status clearlist(linklist &l)
return ok;
//-------------------------------------
}
求表l的長度int listlength(linklist l)
return j;
//-------------------------------------
}
取表l中的第i個元素,並用e返回. 操作成功返回ok,失敗時返回errorstatus getelem(linklist l, int i, elemtype &e)
if(!p || j>i)
return error;
e=p->data;
return ok;
//-------------------------------------
}
在表l中定位元素e首次出現的位置. 操作成功返回位序,失敗時返回0compare(a,b) 為比較函式,匹配時返回true,否則返回false
int locateelem(linklist l, elemtype e, bool (*compare)(elemtype,elemtype))
return 0;
//-------------------------------------
}
在表l中插入第i個元素e. 操作成功返回ok,失敗時返回errorstatus listinsert(linklist &l, int i, elemtype e)
if(!p || j>i-1)
return error;
s=(linklist)malloc(sizeof(lnode));
s->data=e;
s->next=p->next;
p->next=s;
return ok;
//-------------------------------------
}
刪除表l中第i個元素,結果用e返回. 操作成功返回ok,失敗時返回errorstatus listdelete(linklist &l, int i, elemtype &e)
if(!(p->next)||j>i-1) return error;
q=p->next;
p->next=q->next;
e=q->data;
free(q);
return ok;
//-------------------------------------
}
線性表型別的實現 順序映像
順序映象 以 x 的儲存位置和 y 的儲存位置之間某種關係表示邏輯關係。最簡單的一種順序映象方法是 令 y 的儲存位置和 x 的儲存位置相鄰。順序映像的 c 語言描述 順序表的儲存結構定義 define maxsize 100 線性表儲存空間的分配量,即陣列長度 typedef struct sql...
線性表的鍊錶實現
include include define elemtype int typedef struct lnode list struct lnode struct lnode l list ptrl list makeempty list ptrl 建立空表 int length list ptrl...
線性表的鍊錶實現
include printf輸出函式和scanf輸入函式所在標頭檔案 include exit退出函式所在標頭檔案 include malloc動態記憶體分配函式 realloc函式所在的標頭檔案 includeusing namespace std 用 define巨集定義來定義符號常量 函式結果...