1.鍊錶節點的結構
typedef intelemtype;
typedef
struct
node ;
struct node*next;
}hsnode,*hlinklist;
2.需要實現的部分函式
//初始化void
inithlinklist(hlinklist head);
//插入
bool inserthlinklistpos(hlinklist head,elemtype value,int
pos);//按位置插入資料
bool
inserthlinklisthead(hlinklist head, elemtype value);//頭插
bool
inserthlinklistrear(hlinklist head, elemtype value);//尾插
//刪除
bool deletehlinklistpos(hlinklist head, int
pos);//按位置刪
bool
deletehlinklisthead(hlinklist head);//刪頭
bool
deletehlinklistrear(hlinklist head);//刪尾
bool
deletehlinklistvalue(hlinklist head, elemtype value);//按值刪除
bool
empty(hlinklist head);//判空
inthlength(hlinklist head);//長度
void
show(hlinklist head);//列印
void
destoryhlinklist(hlinklist head);
void
reverse(hlinklist head);//逆置
void reverse2(hlinklist head);
3.具體實現
#include#include#include
"linklisthead.h
"static
new_node->data =value;
new_node->next =head;
return
new_node;
}void
inithlinklist(hlinklist head)
//插入
bool inserthlinklistpos(hlinklist head,elemtype value,int
pos)
hlinklist p =head;
while (pos > 0
)
if (nullptr ==new_node)
p->next =new_node;
head->length++;//
別忘l length += 1;
return
true;}
bool
inserthlinklisthead(hlinklist head, elemtype value)
bool
inserthlinklistrear(hlinklist head, elemtype value)
//刪除
bool deletehlinklistpos(hlinklist head, int
pos)
if (pos < 0 || pos >hlength(head))
hlinklist p = head;//
帶入乙個節點進行判斷;如 0 節點
while (pos > 0
)
hlinklist q = p->next;
p->next = q->next;
free
(q);
//hlinklist tmp1 = head->next;
//error
//while (pos > 0)
//
//hlinklist tmp2 = tmp1;
//tmp1->next= tmp2->next;
//free(tmp2);
head->length--;
return
true;}
bool
deletehlinklisthead(hlinklist head)
bool
deletehlinklistrear(hlinklist head)
bool deletehlinklistvalue(hlinklist head, elemtype value)//
再看看 hlinklist p =head;
hlinklist q = p->next;
while (q !=nullptr)
else
q = p->next;
}return
true;}
void
destoryhlinklist(hlinklist head)
}bool
empty(hlinklist head)
inthlength(hlinklist head)
void
show(hlinklist head)
hlinklist p = head->next;
while (p !=nullptr)
printf("\n
");}void
reverse(hlinklist head)
head->next =s;
}void reverse2(hlinklist head)//
頭插法}
ps:**是執行過,才轉移上來.可以直接複製(若需要).其中有什麼不對的地方,望告知謝謝各位大佬.
單向鍊錶刪除節點
單向鍊錶刪除節點的乙個技巧,這個是在 程式設計之美 上面看到的,可以用來對付一些演算法題。有時候會遇到這種情況,單鏈表提供乙個指標,要求要刪除指標指向的節點。如下 考慮到釋放記憶體,還再需要乙個指標 我們具體一下,有這麼乙個單向鍊錶,這個鍊錶的節點比較簡單,資料域只有乙個整型 並且當前的指標 ite...
單向鍊錶刪除節點
include include include include 使用隨機數的標頭檔案 using namespace std class list list del ptr list head,list ptr int main srand unsigned time null 以時間為隨機數的種子...
反轉部分單向鍊錶
給定乙個單向鍊錶的頭節點head,以及兩個整數from和to,在單項鍊表上把第from個節點到to個節點的這一部分進行反轉。例如 1 2 3 4 5 null from 2,to 4 調整結果為1 4 3 2 5 null 再如1 2 3 null from 1,to 3 調整結果為3 2 1 nu...