資料結構 線性表鏈式儲存結構 單向鍊錶

2021-09-28 11:40:43 字數 2624 閱讀 8678

首結點的插入和刪除操作與其他結點一致,無需特別處理

無論鍊錶是否為空都有乙個頭結點,統一了空表和非空表的處理,即判斷l->next是否為空即可

typedef  x  linktype

/* * x是鍊錶的型別(例如單向鍊錶結構,雙向鍊錶結構等),重新定義乙個通用的型別:linktype

* 這樣就可以通過linktype來定義函式,對不同鍊錶型別的移植和修改會更加方便

*/

//巨集定義

#define failed 0

#define success 1

typedef

int elemtype;

typedef

struct lnode

linknode;

//建立鍊錶

//**********************頭插法**********************//

linknode*

createlinklistf

(elemtype a,

int n)

return l;

}//**********************尾插法**********************//

linknode*

createlinklistr

(elemtype a,

int n)

r->next =

null

;return l;

}//**********************鍊錶初始化**********************//

linknode*

initlinklist()

//**********************銷毀線性表**********************//

void

destroylinklist

(linknode* l)

free

(s);

}//**********************判斷空表**********************//

intlinklistempty

(linknode* l)

//**********************求表長**********************//

intlinklistlength

(linknode* l)

return n;

}//**********************輸出資訊**********************//

void

displinklist

(linknode* l)

printf

("\n");

}//**********************得到第i個值**********************//

intgetlinkelem

(linknode* l,

int i, elemtype* e)if(

!s)return failed;

else

}//**********************得到e的索引**********************//

intlocatelinkelem

(linknode* l, elemtype e)

if(s->next ==

null

)return failed;

else

return i;

}//**********************插入元素**********************//

intlinklistinsert

(linknode* l,

int i, elemtype e)if(

!s)return failed;

else

}//**********************刪除元素**********************//

intlinklistdelete

(linknode* l,

int i, elemtype* e)

if(s->next ==

null

)return failed;

else

}

//將乙個帶頭結點的單鏈表l分成兩個單鏈表l1和l2,其中l1使用l的單鏈表,單數字屬於l1,雙數字屬於l2

void

splitlink

(linknode* l,linknode*

* l1,linknode*

* l2)

r->next =

null;}

//刪除單鏈表l中的元素值最大的乙個結點

void

delmaxlinknode

(linknode* l)

pre = p;

p = p->next;

} premax->next = max->next;

free

(max);}

//將乙個帶頭結點和至少乙個資料結點的單鏈表進行有序遞增排序

void

sortlink

(linknode* l)

}

資料結構 線性表鏈式儲存結構

鏈式儲存 用一組任意的儲存單元儲存線性表中的資料元素。用這種方法儲存的線性表簡稱線性鍊錶。儲存鍊錶中結點的一組任意的儲存單元可以是連續的,也可以是不連續的,甚至是零散分布在記憶體中的任意位置上的。鍊錶中結點的邏輯順序和物理順序不一定相同。即不要求邏輯上相鄰的元素在物理位置上也相鄰 為了正確表示結點間...

資料結構 線性表(鏈式儲存結構)

用一組任意的儲存單元儲存線性表的資料結構,這組儲存單元可以是連續的,也可以是不連續的。對資料結構ai來說,除了儲存其本身的資訊之外,還需儲存乙個指示其後繼的資訊 即直接後繼的儲存位置 資料域 儲存資料元素資訊的域。指標域 儲存直接後繼位置的域。資料域 指標域 結點 n個結點鏈結成乙個鍊錶,即為線性表...

資料結構 線性表鏈式儲存

對於線性鍊錶,有兩種表示方法,一種是包含頭節點的情況,如下圖 一種是不包含頭節點的情況,如下圖 本文中對線性鍊錶的表示,利用的是帶頭節點的定義方式。使用c 實現了線性鍊錶建立,初始化,刪除,插入,清空,遍歷,有序鍊錶合併等操作。煉表頭 頭指標 頭結點 煉表頭 指的是線性表第乙個元素所在結點 頭指標 ...