#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,完成依次...