(
插入運算是將值為x的新結點插入到表的第i個結點的位置上
具體步驟
(
(
(
(
具體插入過程【 參見動畫演示 】
(
void InsertList(LinkList head
{//將值為x的新結點插入到帶頭結點的單鏈表head的第i個結點的位置上
ListNode *p;
p=GetNode(head
if (p==NULL)//i<
Error(
s=(ListNode *)malloc(sizeof(ListNode));
s
}
(
算法的時間主要耗費在查找操作GetNode上
(
刪除運算是將表的第i個結點刪去
具體步驟
(
(
(
具體操作過程【 參見動畫演示 】
(
void DeleteList(LinkList head
{//刪除帶頭結點的單鏈表head上的第i個結點
ListNode *p
p=GetNode(head
if (p==NULL||p
Error(
r=p
p
free(r);//釋放結點a i 的空間給存儲池
}
注意
設單鏈表的長度為n
當i=n+
就一定存在
(
算法的時間復雜度也是O(n)
鏈表上實現的插入和刪除運算
From:http://tw.wingwit.com/Article/program/sjjg/201311/23306.html