turboc 调试时的疑惑

lhzaini2003 2004-11-21 09:31:48
我用了一个链来构造一个一元多次函数.是不缺项的标准函数.

#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了,单步运行可以看到这个结果*/

}

请高手指教!
...全文
71 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
its11117 2004-11-22
  • 打赏
  • 举报
回复
up

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧