單鏈表日常複習

2021-09-03 01:30:56 字數 1705 閱讀 4870

#include#include#define err 0

#define ok 1

struct node()

typedef struct node node;

typedef struct node * link;

void create_new_link(link *head)

int judge_node(link new_node)

else }

create_new_node(link *new_node,i)

while(judge_node(*new_node) == err);

(*new_node)->num = i; }

void insert_new_node_head(link new_node,link * head)

void insert_new_node_tail(link new_node,link * head)

else

p->next = new_node; //如果p的指標域為null,則p為末尾結點,從該點插入

new_node-next = null;

} }display_head(link head)

else }

}void fanzhuan(link *head)

p2 = p2->next;

if(p2->next == null)

p3 = p2->next;

while(p3 != null)

p2->next = p1;

*head = p2;

p->next = null; //????? }

void insert_new_node_mid(link new_node,link *head,int num_val) //中插(前插)

else }

if(p == *head) //位置在頭指標處,前插

if(p->next == null && p->num != num_loc) //未找到,插入到末尾

else //前插 }

void deleate_node(link *head,link num_del)//刪除結點

else

if((*head) == num_del)//待刪除的數值位於頭指標指向結點的值域,那麼頭指標直接指向下乙個結點

if(p->next ==null && p != num_del)

else//在中間或者末尾

}}int main()

display_head(&head);

fanzhuan(&head);

display_head(&head);

scanf("%d,%d",&num_loc,&num_val); //輸入插入的位址位置和值

create_new_node(&new_node,num_val); //建立新的結點

insert_new_node_mid(new_node,&head,num_val); //在中間插入結點

display_head(&head);

scanf("%d",&num_del); //輸入要刪除的結點值

deleate_node(&head,num_del);

display_head(&head);

}

單鏈表的建立,頭插,中間插入,尾插,結點的刪除,反制,列印

單鏈表複習

單鏈表的定義 include include define len sizeof struct node define null 0 typedef int datatype typedef struct node linklist 單鏈表的尾插法建立 linklist hrear creat re...

日常 演算法 單鏈表的建立

1.先建立乙個頭結點,不需要有資料域,頭結點的next指向null 2.迴圈中建立結點,把頭結點的next賦值給 新結點的next,相當於新結點的next指向了 頭結點next所指向的 3.把新結點賦值給頭結點的next 相當於頭結點的next指向了新結點,這樣就串起來了 4.頭結點就相當於整個鍊錶...

單鏈表(合併單鏈表)

單鏈表遍歷 單鏈表遍歷是從單鏈表頭指標head開始訪問,沿著next指標所指示的方向依次訪問每乙個結點,且每個結點只能訪問依次,直到最後乙個結點為止。遍歷時注意,不要改變head指標的指向。因此一般設定另外的乙個指標變數如p,p從head開始依次訪問乙個結點,直到鍊錶結束,此時p null,完成依次...