指针有关问题,求!

指针问题,急求!!
在已经存储好数据的指针,要怎样改变它所指向的的值并且能将改正好的指针,能够很好的体现在一个链表里,其实就是链表里数据的修改要怎样完成,下面是我写的代码,错误可能会很多,多次修改还是不知道要怎样修改
主要就是红色的代码:
void changedata(linklist *L)
{
    linklist *pt1, *pt2;
char str_num[20];
if(L->next==NULL)
    {
        printf("无需修改,该表为空表\n");
    }
    else
    {
printf("请输入您要修改的编号信息:");
scanf("%s",str_num);
pt1=L->next;
pt2=(linklist*)malloc(sizeof(linklist));
while(pt1!=NULL)
    {
if(strcmp(pt1->num,str_num)==0)
{
    printf("\n输入添加货物的信息:");
    printf("\n请输入货物编号:");
            scanf("%s",&pt2->num);
            printf("\n请输入货物名称:");
            scanf("%s",&pt2->name);
            printf("\n请输入货物进货价:");
            scanf("%f",&pt2->purchase);
            printf("\n请输入货物销售价:");
            scanf("%f",&pt2->sales);
            printf("\n请输入货物生产日期:");
            scanf("%s",pt2->MFG);
            printf("\n请输入货物和保质期:");
            scanf("%s",pt2->EXP);
            printf("\n请输入货物库存量;");
            scanf("%d",&pt2->VMI);
            printf("\n请输入货物销售数量;");
            scanf("%d",&pt2->SV);
            pt1=&pt2;
    pt2->next=pt1->next;
}
pt1=pt1->next;
 }
    }
}

------解决方案--------------------
void changedata(linklist *L)
 {
     linklist *pt1, *pt2;
     char str_num[20];
     if(L->next==NULL)
     {
         printf("无需修改,该表为空表\n");
     }
     else
     {
        printf("请输入您要修改的编号信息:");
        scanf("%s",str_num);
        pt1=L->next;
  //      pt2=(linklist*)malloc(sizeof(linklist));
        while(pt1 != NULL)
        {
            if(strcmp(pt1->num,str_num)==0)
            {
                printf("\n输入添加货物的信息:");
                printf("\n请输入货物编号:");
                fscanf(STDIN, "%s", pt1->num);
                printf("\n请输入货物名称:");
                fscanf(STDIN, "%s", pt1->name);
                printf("\n请输入货物进货价:");
                fscanf(STDIN, "%f", &pt1->purchase);
                printf("\n请输入货物销售价:");
                fscanf(STDIN, "%f", &pt1->sales);
                printf("\n请输入货物生产日期:");
                fscanf(STDIN, "%s", pt1->MFG);
                printf("\n请输入货物和保质期:");
                fscanf(STDIN, "%s", pt1->EXP);
                printf("\n请输入货物库存量;");