C语言求救求救啊!~~~

CloudStrifers 2011-09-28 09:27:48
通过键盘输入一组多项式的系数和指数,用尾插法建立一元多项式的链表;
系统用COEF,指数用EXP,指针是NEXT;
方法如下,为什么运行不起来?我用F10调试时候在进入子函数就运行不起了,这怎么回事?
#include <stdio.h>
#include <malloc.h>
typedef struct seqlist
{
int coef;
int exp;
seqlist *next;
}seqlist;
int pai(seqlist *no);
int main()
{
seqlist *head;
head=(seqlist *)malloc(sizeof(seqlist));
pai(head);
return 0;
}
int pai(seqlist *no)
{
int flag=1,a,b;
seqlist *p,*q;
q=no;
while(flag)
{
scanf("%d,%d",&a,&b);
if(a!=0)
{
p->coef=a;
p->exp=b;
q->next=p;
q=p;
p=p->next;
}
else
{
flag=0;
p->next=NULL;
}
}
return 0;
}








...全文
117 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

head=(seqlist *)malloc(sizeof(seqlist));

head->next = NULL;



if(a!=0)
{
p->coef=a;
p->exp=b;
q->next=p;
q=p;
p=p->next;
}

p都没分配空间,你就直接操作其成员了
建议
p = (seqlist *)malloc(sizeof(seqlist));
p->next = NULL;
尘缘udbwcso 2011-09-28
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <malloc.h>
typedef struct seqlist
{
int coef;
int exp;
struct seqlist *next;
}seqlist;
/*
*功能:输入多项式的系数和指数
*返回值:多项式的首地址
*
*/
seqlist *inputMult()
{
seqlist *head, *p1, *p2;
head = (seqlist*)malloc(sizeof(seqlist));
p1 = head;
printf("请输入多项式(当系数和指数均为0时结束):\n");
while(1)
{
printf("系数: ");
scanf("%d", &p1->coef);
printf("指数: ");
scanf("%d", &p1->exp);
if(p1->coef == 0 && p1->exp == 0)
break;
p2 = p1;
p1 = (seqlist*)malloc(sizeof(seqlist));
p2->next = p1;
}
p2->next = NULL;
free(p1);
return head;
}
/*
*功能:输出多项式
*参数:多项式的首地址
*
*/
void display(seqlist *head)
{
while(head != NULL)
{
printf("%dX^%d", head->coef, head->exp);
if(head->next != NULL)
printf(" + ");
head = head->next;
}
printf("\n");
}

int main()
{
seqlist *head;
head = inputMult();
display(head);
return 0;
}

70,034

社区成员

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

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