数据结构学习系列之单向链表的三种插入方式
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
- 方式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
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |