單向鍊錶(單鏈表)是鍊錶的一種,其特點是鍊錶的鏈結方向是單向的,對鍊錶的訪問要通過順序讀取從頭部開始。
單向鍊錶的資料結構可以分為兩部分:資料域和指標域,資料域儲存資料,指標域指向下乙個儲存節點的位址。分為動態單向鍊錶和靜態單向鍊錶。單向鍊錶也可以根據是否帶頭節點分為帶頭節點結構和無帶頭節點結構。我們把指向單鏈表的指標為頭指標。頭指標所指的不存放資料元素的第乙個節點稱作頭節點。存放資料元素的節點成為第乙個資料元素節點。
注:第乙個資料元素節點在帶頭節點單鏈表中是第二個節點;而在不帶頭節點的單鏈表中是第乙個節點。
拿出來做比較主要是因為帶頭節點和不帶頭節點單鏈表刪除和插入操作不一樣,只是對於頭指標,容易出現錯誤。廢話少說,比較內容如下:
如選用帶頭節點的單鏈表,設頭指標為head,則在第乙個資料元素節點前插入元素,不會改變頭指標head的值,改變的是頭指標所指向頭節點的指標域值。即改變的是head->next的值。當臨時變數p等同於head時,改變的是指標p->next的值,這與在其他元素節點前插入節點的過程相同;類似的則刪除第乙個資料元素節點時,不會改變頭指標head的值,即改變的是head->next,當臨時變數等同於head時,改變的是p->next的值。這與刪除其他位置元素節點相同。
如選用不帶頭節點的單鏈表,設頭指標為head,則在第乙個資料元素節點前插入元素,頭指標head的值將改變為等於s指標的值。(s相當於需要插入的節點元素),若在其他位置插入元素s,頭指標head不會改變,改變的是臨時變數p->next的值。如刪除第乙個元素節點時,頭指標head的值改變為head->next,刪除其他元素節點時,不會改變頭指標head的值,改變的是臨時變數p->next的值。
如果對於上面的比較有點困惑,你可以畫一下原型圖。head為頭指標,節點s是需要插入的元素節點。p是指向你單鏈表插入或刪除的第n-1個節點。(比如你是在第4個節點前插入,p是指向了第3個節點)。
建立乙個單鏈表,首次輸入1,2,3,4,5,6,,7,8,9,10元素節點,然後刪除元素5的節點。
取法乎上,僅得其中;取法乎中,僅得其下;取法乎下,一無所得。
資料結構(一) 線性表之單向鍊錶
線性表,linear list,是最基本 最簡單 最常用的一種資料結構。乙個線性表是n個具有相同特性的資料元素的有限序列,例如 a1,ai 1,ai,ai 1,an 表示乙個順序表,ai 1領先於ai,ai領先於ai 1,稱ai 1是ai的直接前驅元素,ai 1是ai的直接後繼元素。特別的,第乙個元...
線性表之單向鍊錶
pragma once 單向 不迴圈 不帶頭 typedef int sldatetype typedef struct slistnode slistnode typedef struct slist slist 初始化 void slistinit slist list 銷毀 void slis...
資料結構線性表之鍊錶
c 關於鍊錶的操作,包括建立鍊錶 正序和倒序插入 輸出鍊錶內容 插入節點 刪除節點 銷毀等操作 單鏈表基本操作 include include define elemtype int typedef struct nodelnode,linklist linklist link linklist m...