c语言修改链表里的某个结点,关于链表修改某节点值的问题(调试就是不会改)?...

得分:30

ca56232b3bbedf9a539d07f37fffb99a.gif

3144d8b7615c79d9f638db40d5689d26.gif

a218af6549b45ee526caf607ebff1358.gif

0f8df0e29816ae721419de940fb833d1.gif

代码修改如下即可(红色部分为修改部分):

#include "stdio.h"

#include "stdlib.h"

//=================================================================

struct num_list

{

int inum;

struct num_list* nnext;

};

int i;                //记录节点

//==================================================================

/*创建链表*/

struct num_list* iscreate()

{    i=0;

int datanum_1;

struct num_list* itemp_1,*iend,*ihead;

ihead=(struct num_list*)malloc(sizeof(struct num_list));

if(ihead==NULL)

{

printf("头节点申请空间失败!\n");

return NULL;

}

iend=ihead;

printf("请输入数据:\n");

scanf("%d",&datanum_1);

itemp_1=(struct num_list*)malloc(sizeof(struct num_list));

while(datanum_1!=0)

{

if(itemp_1==NULL)

{

iend=itemp_1;

}

else

{

i++;

itemp_1->inum=datanum_1;

itemp_1->nnext=NULL;

iend->nnext=itemp_1;

iend=itemp_1;

}

itemp_1=(struct num_list*)malloc(sizeof(struct num_list));

printf("请输入数据:\n");

scanf("%d",&datanum_1);

}

iend->nnext=NULL;

return ihead;

}

//========================================================================================

/*修改某节点数据*/

struct num_list* datachange(struct num_list* shead,int numcha,int datanum)

{

struct num_list* itemp;

itemp=shead;            //临时指针指向头节点

if(itemp==NULL)            //头节点为空时

{

printf("链表为空!\n");

return NULL;

}

if(datanum<0)                        //如果要修改的数据小于0时

{

printf("输入的数据小于0!\n");

return NULL;

}

i=1;

while(i

{

itemp=itemp->nnext;

i++;

}

if(i==numcha)                        //循环到要修改节点的前一个节点时。    {

itemp=itemp->nnext;                //指向要修改的节点

itemp->inum=datanum;            //修改数据

}

return shead;

}

struct num_list* prit(struct num_list* shead)

{

struct num_list* temp;

int numdata=0;

temp=shead;

if(shead==NULL)

{

printf("链表为空!\n");

}

temp=temp->nnext;

while(temp!=NULL)

{

numdata++;

printf("节点编号为:%d\n",numdata);

printf("录入的数据为:%d\n",temp->inum);

temp=temp->nnext;

}

return shead;

}

int main()

{

struct num_list* temp;

temp=iscreate();

int num_1,num_2;

prit(temp);

printf("请输入要修改的节点位置:\n");

scanf("%d",&num_1);

printf("请输入要修改的数据:\n");

scanf("%d",&num_2);

datachange(temp,num_1,num_2);

prit(temp);

return 0;

}

[此贴子已经被作者于2016-1-3 05:23编辑过]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值