为什么这个代码无法运行?个人感觉应该没有死循环啊
#include <stdio.h>
#include <stdlib.h>
typedef struct pNode{
int coef; //x系数域
int exp; //指数域
struct pNode* link; 指针域
}PNode;
typedef struct polynominal{
PNode *head;
}Polynominal;
void Creat(Polynominal *h);
//void Output(Polynominal *h);
void Destroy(Polynominal *h);
int main()
{
Polynominal *p;
p=(Polynominal*)malloc(sizeof(Polynominal));
if (!p)
exit(1);
Creat(p);
// Output(p);
Destroy(p);
return 0;
}
void Creat(Polynominal *h)
{
int i,x,m;PNode *p,*q;
h->head=(PNode*)malloc(sizeof(PNode));
if (!h->head)
exit(1);
h->head->exp=-1;
h->head->link=h->head;
printf("input the number of the node:");
scanf("%d",&x);
for(i=0;i<x;i++)
{
p=(PNode*)malloc(sizeof(PNode));
printf("input the coef and the exp:");
do{
scanf("%d%d",&p->coef,&p->exp);
}while(p->exp<0);
q=h->head;
for(m=0;m<=i;m++)
{
if (q == q->link) //当仅有头结点时
{
p->link = q;
q->link = p;
}
else
{
if (p->exp > ((q->link)->exp)&&q->link!=h->head) //当p>q->link且q不为最后一个节点时
{
q = q->link;
}
else
{
p->link = q->link;
q->link = p;
break;
}
}
}
}
}
void Destroy(Polynominal *h)
{
PNode *p;
while(h->head)
{
p=h->head->link;
free(h->head);
h->head=p;
}
}