鱼C论坛

 找回密码
 立即注册
查看: 3646|回复: 2

内存引用无效的问题

[复制链接]
发表于 2013-10-8 12:39:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 智能 于 2013-10-8 19:46 编辑
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. typedef struct node
  4. { int coef, exp;
  5. struct node *next;
  6. } NODE;

  7. void multiplication( NODE *, NODE * , NODE * );
  8. void input( NODE * );
  9. void output( NODE * );
  10. void multiplication(NODE*a,NODE*b,NODE*c)
  11. {
  12. NODE *a0=a;
  13. NODE *b0=b;
  14. NODE *c0=c;
  15. NODE *c1=NULL;
  16. NODE *lin=NULL;
  17. NODE *zhong=NULL;
  18. int ji,p=8,k;
  19. while(b0->next!=NULL)
  20. {
  21. b0=b0->next;
  22. a0=a;
  23. while(a0->next!=NULL)
  24. {
  25. a0=a0->next;
  26. ji=a0->coef*b0->coef;
  27. k=a0->exp+b0->exp;
  28. c0=c;
  29. while(c0->next!=NULL)
  30. {
  31. p=0;
  32. lin=c0;//临时存储c0
  33. c0=c0->next;
  34. if(c0->exp>=k)
  35. {p=1;break;}
  36. }
  37. if(c0->next==NULL&&p!=1)
  38. {
  39. if(c0->exp!=k)
  40. {
  41. zhong=(NODE*)malloc(sizeof(NODE));
  42. c0->next=zhong;
  43. zhong->next=NULL;
  44. zhong->coef=ji;
  45. zhong->exp=k;
  46. }
  47. else
  48. c0->coef=c0->coef+ji;
  49. }
  50. if(c0->exp==k)
  51. {
  52. c0->coef=c0->coef+ji;
  53. }
  54. if(c0->exp>k)
  55. {
  56. c1=(NODE*)malloc(sizeof(NODE));//新申请c1
  57. lin->next=c1;
  58. c1->next=c0;
  59. c1->exp=k;
  60. c1->coef=ji;
  61. }
  62. }
  63. }
  64. }



  65. void input( NODE * head )
  66. { int flag, sign, sum, x;
  67. char c;

  68. NODE * p = head;

  69. while ( (c=getchar()) !='\n' )
  70. {
  71. if ( c == '<' )
  72. { sum = 0;
  73. sign = 1;
  74. flag = 1;
  75. }
  76. else if ( c =='-' )
  77. sign = -1;
  78. else if( c >='0'&& c <='9' )
  79. { sum = sum*10 + c - '0';
  80. }
  81. else if ( c == ',' )
  82. { if ( flag == 1 )
  83. { x = sign * sum;
  84. sum = 0;
  85. flag = 2;
  86. sign = 1;
  87. }
  88. }
  89. else if ( c == '>' )
  90. { p->next = ( NODE * ) malloc( sizeof(NODE) );
  91. p->next->coef = x;
  92. p->next->exp = sign * sum;
  93. p = p->next;
  94. p->next = NULL;
  95. flag = 0;
  96. }
  97. }
  98. }

  99. void output( NODE * head )
  100. {
  101. while ( head->next != NULL )
  102. { head = head->next;
  103. printf("<%d,%d>,", head->coef, head->exp );
  104. }
  105. printf("\n");
  106. }
  107. int main()
  108. { NODE * head1, * head2, * head3;

  109. head1 = ( NODE * ) malloc( sizeof(NODE) );
  110. input( head1 );

  111. head2 = ( NODE * ) malloc( sizeof(NODE) );
  112. input( head2 );

  113. head3 = ( NODE * ) malloc( sizeof(NODE) );
  114. head3->next = NULL;
  115. multiplication( head1, head2, head3 );

  116. output( head3 );
  117. system("pause");

  118. return 0;
  119. }
复制代码

用dev和vs都可以编译并输出正确结果,但用gcc会提示“无效内存引用。”其中multiplication函数是自己编的,其它是预制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-10-8 18:05:28 | 显示全部楼层
没人来吗。。。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-10-10 21:18:24 | 显示全部楼层
再次求解答
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-10 21:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表