單向鍊錶的節點結構以及部分函式的實現 帶頭結點

2022-09-09 05:06:07 字數 3058 閱讀 2732

1.鍊錶節點的結構

typedef int

elemtype;

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...