線性表型別的實現 鍊錶映像

2022-03-30 19:50:24 字數 1725 閱讀 4046

用一組位址任意的儲存單元存放線性表中的資料元素。

以元素(資料元素的映象)  +指標(指示後繼元素儲存位置)  =  結點 (表示資料元素  或  資料元素的映象)

以「結點的序列」表示線性表 稱作鍊錶

結點和單鏈表的 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,失敗時返回error 

status getelem(linklist l, int i, elemtype &e)

if(!p || j>i)

return error;

e=p->data;

return ok;

//-------------------------------------

}

在表l中定位元素e首次出現的位置. 操作成功返回位序,失敗時返回0 

compare(a,b) 為比較函式,匹配時返回true,否則返回false

int locateelem(linklist l, elemtype e, bool (*compare)(elemtype,elemtype))

return 0;

//-------------------------------------

}

在表l中插入第i個元素e. 操作成功返回ok,失敗時返回error

status 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,失敗時返回error 

status 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巨集定義來定義符號常量 函式結果...