- 方法 1:
- 単一リンクリストに
头结点和第0个结点之间
新しいノードを挿入します。つまり头插法
、コードは次のようになります。
- サンプルコード:
int insert_link_list_1(node_t *phead,int data){
if(NULL == phead){
printf("入参为NULL\n");
return -1;
}
node_t *pnew = NULL;
create_link_node_2(&pnew,data);
pnew->next = phead->next;
phead->next = pnew;
return 0;
}
- 手順:
- 1. 新しいノードを作成します
pnew
。
- 2. 0 番目のノードのアドレスを新しいノードのポインタ フィールド、すなわち
pnew->next = phead->next
;にポイントします。
- 3. 新しいノードのアドレスをヘッド ノードのポインタ フィールド、つまり
phead->next = pnew
;にポイントします。
- 方法 2:
- 単一リンクリスト
最后一个结点后面插入新结点
、つまり の尾插法
コードは次のとおりです。
- サンプルコード:
int insert_link_list_2(node_t *phead,int data){
if(NULL == phead){
printf("入参为NULL\n");
return -1;
}
node_t *pnew = NULL;
create_link_node_2(&pnew,data);
node_t *ptemp = phead;
while(NULL != ptemp->next){
ptemp = ptemp->next;
}
ptemp->next = pnew;
return 0;
}
- 手順:
- 1. 新しいノードを作成します
pnew
。
- 2. リンク リストを走査し、リンク リストの最後のノードを見つけます
ptemp
。
- 3. 新しいノードのアドレスを最後のノードのポインタ フィールド、つまり
ptemp->next = pnew
;にポイントします。
- 方法 3:
- 単一リンクリストの任意の位置に新しいノードを挿入します。コードは次のとおりです。
- サンプルコード:
int insert_link_list_3(node_t *phead,int pos,int data){
if(NULL == phead){
printf("入参为NULL\n");
return -1;
}
if(pos < 0){
printf("插入位置不合理,插入失败\n");
return -1;
}
node_t *ptemp = phead;
int i = 0;
for(i = 0; i < pos; i++){
if(NULL == ptemp){
break;
}
ptemp = ptemp->next;
}
if(i < pos){
printf("插入位置不合理,插入失败\n");
return -1;
}
node_t *pnew = NULL;
create_link_node_2(&pnew,data);
pnew->next = ptemp->next;
ptemp->next = pnew;
return 0;
}
- 手順:
- 1. リンクされたリストをたどって、挿入される前のノード、つまり
ptemp
;を見つけます。
- 2. 新しいノードを作成します
pnew
。
- 3. 挿入するノードのアドレスを新しいノードのポインタ フィールド、つまり
pnew->next = ptemp->next
;にポイントします。
- 4. 新しいノードのアドレスを、挿入される位置にある前のノードのポインタ フィールド、つまり
ptemp->next = pnew
;を指すようにします。