turboc 调试时的疑惑
我用了一个链来构造一个一元多次函数.是不缺项的标准函数.
#include<stdio.h>
typedef struct lnode
{ int a; /* x的系数;*/
int n; /* x的次数;*/
struct lnode * l;
}lnode, *linklist;
void create(int a,int n,lnode**h) /* n次固定后,自减直到n=0为常数项*/
{linklist q,p;int i;
q=*h;i=n;
do
{scanf("%d",&a);
p=(linklist)malloc(sizeof(lnode));
p->a=a;
p->n=i;
p->l=NULL;
q->l=p;
q=q->l;i--;} while(i>=0);
}
main()
{linklist h1,h2,q,p,h;
int n1,n2,i,a=0;
h1=h2=(linklist)malloc(sizeof(lnode));
h1->a=h2->a=0;
h1->n=h2->n=0;
h1->l=h2->l=NULL;
printf("n1=");
scanf("%d",&n1);
printf("gouzhaon1yuanfangchen");
create(a,n1,&h1); /*h1链的头指针返回*/
q=h1->l;
while(q)
{printf("%dx%d\n",q->a,q->n);
q=q->l;}
printf("n2=");
scanf("%d",&n2);
printf("gouzhaon2yuanfangchen");
create(a,n2,&h2); /*h2链的头指针返回*/
p=h2->l;
while(p)
{printf("%dx%d\n",p->a,p->n);
p=p->l;}
/*大家可以单步执行,到此可以看到,结果符合构想*/
printf("111\n");
while(h1)
{printf("%dx%d\n",h1->a,h1->n);/*h1链莫名的指向链h2了,单步运行可以看到这个奇怪的结果*/
h1=h1->l;}
printf("222\n");
while(h2)
{printf("%dx%d\n",h2->a,h2->n);
h2=h2->l;} /*h2还是指向链h2了,单步运行可以看到这个结果*/
}
请高手指教!