單鏈表;雙鏈表;環形鍊錶;
head -> a1 -> a2 -> a3
有了頭結點後,對在第乙個元素結點前插入結點和刪除第乙個結點,其操作與對其它結點的操作統一了。
優點:
缺點:
使用場景:
不清楚總體大小,且需要頻繁的插入或刪除操作;
type linknode struct
//data使用介面,可以為任意型別,範性;
next *linknode
}type llist linknode
實現介面
這裡使用介面,寫**的時候忘了用了,直接用結構體的方法了;
type llister inte***ce
, i int
)//插入v到第ige
delete
(index int
)inte***ce
//刪除第i+1(i從0開始)個,返回value
getlength()
int//統計節點個數(不包括頭節點)
search
(v inte***ce
)int
//查詢值為v的元素,返回所在位置
display()
}
func
(head *llist)
creat_head()
s.next = head.next
head.next = s
}}
尾插法:「正常排隊」
func
(head *llist)
creat_tail()
p.next = s
p = s
}}
這是有頭節點的情況下,也就是頭指標->頭節點->第乙個元素;
插入要明確插入規則,否則會亂掉;
在自己做練習時,沒有特別要求時,確定好插入標準時必要的;
插入位置index,就相當於那個間隙,所以index可以是0~5(5個元素);
當index==length時,相當於尾抽;length==0時相當於頭插;
func
(head *llist)
insert
(v inte***ce
, index int
) p := head
for i :=
0; i < index; i++
newnode :=
&linknode
newnode.next = p.next
p.next = newnode
}
刪除和插入類似,邊界判斷時稍有區別;
index=幾就產出間隔後面的元素,比如index=0就刪除a1,那麼index不能為5,也就是邊界條件:index < 0 || index >= length
;
func
(head *llist)
delete
(index int
)inte***ce
p := head
for i :=
0; i < index; i++
deletenode := p.next
p.next = p.next.next
return deletenode.data
}
package main
import
("fmt"
)type linknode struct
next *linknode
}type llist = linknode
type llister inte***ce
, i int
)//插入v到第ige
delete
(index int
)inte***ce
//刪除第i+1(i從0開始)個,返回value
getlength()
int//統計節點個數(不包括頭節點)
search
(v inte***ce
)int
//查詢值為v的元素,返回所在位置
display()
}func
newllist()
*llist
}func
(head *llist)
creat_head()
s.next = head.next
head.next = s }}
func
(head *llist)
creat_tail()
p.next = s
p = s }}
func
(head *llist)
insert
(v inte***ce
, index int
) p := head
for i :=
0; i < index; i++
newnode :=
&linknode
newnode.next = p.next
p.next = newnode
}func
(head *llist)
delete
(index int
)inte***ce
p := head
for i :=
0; i < index; i++
deletenode := p.next
p.next = p.next.next
return deletenode.data
}func
(head *llist)
getlength()
intreturn length
}func
(head *llist)
search
(value int
)inte***ce
index++
p = p.next
}return fmt.
sprintf
("the value %v is not in the llist;"
, value)
}func
(head *llist)
display()
fmt.
println()
}func
main()
go語言實現單鏈表
package main import fmt 節點結構體 type node struct 鍊錶類 type list struct 建立節點 func createnode data int node 建立鍊錶 func newlist list,0,列印鍊錶 func l list displ...
c語言實現單鏈表
一 使用簡介 使用c語言實現了單鏈表的基本操作,共有四個檔案,兩個標頭檔案是常用的,後兩個分別是主函式,和對鍊錶的基本操作函式,倒入時候,須將四個檔案放在同乙個目錄下。二 心得 在書寫過程中,主要錯誤集中在指標的使用上,通過此次程式設計,對於指標的認識更加深刻,頭結點的存在,更大意義上是為了簡化指標...
C語言實現單鏈表
單鏈表可以說是基礎,有利於對指標的使用 結點 typedef int datatype typedef struct slistnode slistnode 實現的函式的宣告如下 slistnode buynode datatype x void printslist slistnode phead...