关于链表修改某节点值的问题(调试就是不会改)?
问题:找到某个节点,然后把这个节点的数值改成为其它值调试运行值依然没有改变,还是原来那个数据,并没有变成修改后的数据。
不知道错在哪里,请指导!
程序代码:#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;
}
itemp=itemp->nnext; //指向下一节点
while(i<numcha-1) //节点从头节点开始循环到要修改节点的前一个节点
{
itemp=itemp->nnext;
}
if(i==numcha-1) //循环到要修改节点的前一个节点时。
{
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;
}









