- 一方向リンクリストの検索:
- 単一リンク リストのデータ ノードによると
位置查找数据
、コードは次のとおりです。
- サンプルコード:
int search_link_list(node_t *phead,int pos,int *data){
if(NULL == phead || NULL == data){
printf("入参为NULL\n");
return -1;
}
if(NULL == phead->next){
printf("链表只有一个头结点,无其他的结点\n");
return -1;
}
if(pos < 0){
printf("查找位置不合理\n");
return -1;
}
node_t *ptemp = phead;
int i = 0;
for(i = 0; i < pos; i++){
ptemp = ptemp->next;
if(NULL == ptemp->next){
break;
}
}
if(i < pos){
printf("查找位置不合理,查找失败\n");
return -1;
}
*data = ptemp->next->data;
return 0;
}
- 手順:
- 1. 参加の合理性をチェックする。
- 2. 検索対象のデータ ノードの前のノード、つまり
ptemp
;を見つけます。
- 3. 検索する場所のデータフィールドを;に割り当てます
取*后的形参指针data
。*data = ptemp->next->data
- 一方向リンクリストの変更:
- 単一リンク リストのデータ ノードによると
位置修改数据
、コードは次のとおりです。
- サンプルコード:
int modify_link_list(node_t *phead,int pos,int new_data){
if(NULL == phead){
printf("入参为NULL\n");
return -1;
}
if(NULL == phead->next){
printf("链表只有一个头结点,无其他的结点\n");
return -1;
}
if(pos < 0){
printf("修改位置不合理\n");
return -1;
}
node_t *ptemp = phead;
int i = 0;
for(i = 0; i < pos; i++){
ptemp = ptemp->next;
if(NULL == ptemp->next){
break;
}
}
if(i < pos){
printf("修改位置不合理,修改失败\n");
return -1;
}
ptemp->next->data = new_data;
return 0;
}
- 手順:
- 1. 参加の合理性をチェックする。
- 2. 変更するデータ ノードの前のノード、つまり
ptemp
;を見つけます。
- 3. 位置を変更するデータ ノードのデータ フィールドに新しいデータを割り当てます
ptemp->next->data = new_data
。