- 单向链表的查找:
- 根据单向链表数据结点的
位置查找数据
,代码如下:
- 示例代码:
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
;