-
C语言链表出错·········求解···比较简单,原谅我是个初学者吧···3
各位 大哥 ,小弟最近在做课程设计实验时出了点小问题··一直解决不了··
希望大家帮下忙:
#include<stdio.h> #include<malloc.h> #include<conio.h> typedef struct LNode{ int coef;/*系数*/ int expn;/*指数*/ struct LNode *next; }LNode,*LinkList; void Insert_sort_list(LNode *head) { LNode *p, *q, *t, *r; p = head->next; head->next = NULL; while(NULL != p) { t = head; q = t->next; while(NULL != q && q->expn <= p->expn) { t = q; q = q->next; } r = p ->next; t->next = p; p->next = q; p = r; } } void CreateList(LinkList L,int m)/*带头结点*/ { LinkList p,q; int i=0; p=q=L; L->next=NULL; printf("先输系数后输指数,中间空格\n"); for(i=0;i<m;i++){ p=(LNode *)malloc(sizeof(LNode)); scanf("%d %d",&(p->coef),&(p->expn)); L->next=p; L=p; } L->next=NULL; L=q; Insert_sort_list(L); }/*test success*/ void print(LinkList L) { LinkList p; p=L->next; printf("\n(下式中X为未知数)\n"); while(p!=NULL){ printf("\(%dX\^%d\)",p->coef,p->expn); if(p->next!=NULL)printf("\ \+\ "); p=p->next; } } void DeleteNode(LNode *p) { LNode *q; q=p->next; p->next=q->next; free(q); }/*删除节点*/ int LocateElem(LinkList L,int expn)/*查找是否有与该多项式的系数相同的项*/ { LNode *p; p=L; while(p->expn!=expn&&p->next!=NULL) { p=p->next; } if (p->expn==expn){ return p->coef;} /*若找到则返回系数*/ else return 0; } int Length(LinkList L)/*求多项式的项数*/ { LNode *p; int i=0; p=L->next; while(p!=NULL) { p=p->next; i++; } return i; } /* void Delet(LinkList L) { LNode *p,*q; p=L->next; while(p!=null) { q=p; p=p->next; free(q); } } */ void Add(LinkList pa,LinkList pb,LinkList pc)/*多项式相加,pc=pa+pa,*/ { LNode *p, *q, *r, *t; p = pa->next; q = pb->next; r = pc; while(p!=NULL||q!=NULL) { if(p!=NULL&&q!=NULL) { if(p->expn<q->expn) { t=(LNode *)malloc(sizeof(LNode)); t->coef=p->coef; t->expn=p->expn; t->next=NULL; r->next=t; p=p->next; } else if(p->expn==q->expn) { t=(LNode *)malloc(sizeof(LNode)); t->coef=p->coef+q->coef; t->expn=p->expn; t->next=NULL; r->next=t; p=p->next; q=q->next; } else { t=(LNode *)malloc(sizeof(LNode)); t->coef=q->coef; t->expn=q->expn; t->next=NULL; r->next=t; q=q->next; } r=r->next; } else if(p!=NULL&&q==NULL) { r->next=p; p=p->next; r=r->next; } else if(p==NULL&&q!=NULL) { r->next=q; q=q->next; r=r->next; } } } void Subtract(LinkList pa,LinkList pb,LinkList pc)/*多项式相减,pc=pa-pa*/ { LNode *p, *q, *r, *t; p = pa->next; q = pb->next; r = pc; while(p!=NULL||q!=NULL) { if(p!=NULL&&q!=NULL) { if(p->expn<q->expn) { t=(LNode *)malloc(sizeof(LNode)); t->coef=p->coef; t->expn=p->expn; t->next=NULL; r->next=t; p=p->next; } else if(p->expn==q->expn) { t=(LNode *)malloc(sizeof(LNode)); t->coef=p->coef-q->coef; t->expn=p->expn; t->next=NULL; r->next=t; p=p->next; q=q->next; } else { t=(LNode *)malloc(sizeof(LNode)); t->coef=q->coef*(-1); t->expn=q->expn; t->next=NULL; r->next=t; q=q->next; } r=r->next; } else if(p!=NULL&&q==NULL) { r->next=p; p=p->next; r=r->next; } else if(p==NULL&&q!=NULL) { r->next=q; q=q->next; r=r->next; } } } void Multiply(LinkList pa,LinkList pb,LinkList pc)/*多项式相乘pc=pa*pb*/ { LNode *p, *q, *t, *c, *t1,*t2,*temp1,*temp2;/*temp1放第i个与pb相乘的开成的多项式 */ t1=(LinkList)malloc(sizeof(LNode)); pc=(LinkList)malloc(sizeof(LNode)); t1->next=NULL; pc->next=NULL; c=pc; t2=pc; temp2=t2; temp1=t1; if(pa->next==NULL||pb->next==NULL){pc->next==NULL; return;}/* */ for(p = pa->next;p!=NULL;p=p->next) { for(q = pb->next;p!=NULL;q=q->next) { t=(LNode *)malloc(sizeof(LNode)); t->coef=(int)((p->coef)*(q->coef)); t->expn=(int)((p->expn)+(q->expn)); t->next=NULL; temp1->next=t; temp1=temp1->next; } pc->next=NULL; c=pc; Add(t1,t2,c); t2=pc; t1->next=NULL; temp1=t1; } } int main() { LinkList L,M,N; int m,n; L=(LinkList)malloc(sizeof(LNode)); M=(LinkList)malloc(sizeof(LNode)); N=(LinkList)malloc(sizeof(LNode)); N->next=NULL; printf("请输入您要构造的多项式的项数\n"); scanf("%d",&m); CreateList(L,m); print(L); printf("\n长度为:%d",Length(L)); printf("\n\n输入您要查找该多项式的系数相同的项的指数值:\n"); scanf("%d",&n); if(n=LocateElem(L,n)) printf("存在指数与此相同的项,系数为:%d\n",n); else printf("未找到!"); printf("\n以下构造多一个多项式与原多项式进行运算\n"); printf("\n请输入您要构造的多项式的项数\n"); scanf("%d",&m); CreateList(M,m); printf("\n两个多项式相加的结果:\n"); Add(L,M,N); print(N); printf("\n两个多项式相减的结果:\n"); Subtract(L,M,N); print(N); printf("\n两个多项式相乘的结果:\n"); Multiply(L,M,N); print(N); getch(); return 0; }
下面是图片,每次运行到乘法的时候 都会出现这样的错误 ··是不是内存错误····
各位兄台高抬躈帮下忙啊············感激不尽············
2011年6月16日 20:12
相关推荐
在计算机科学领域,迷宫求解问题是一个经典的图论问题,通常通过算法来解决。...对于初学者,这是一个很好的实践项目,可以加深对算法和数据结构的理解。而对于经验丰富的开发者,这类问题提供了优化和性能调优的机会。
本复习资料主要针对初学者,旨在帮助他们巩固在数据结构(C语言版)课程中学到的知识。以下是几个关键的数据结构概念和相关知识点: 1. **数组**:这是最基础的数据结构,允许我们存储相同类型的数据元素集合。...
这是一个基于C语言实现的迷宫求解程序,代码包含了人工探索和自动探索两种方式。程序首先定义了迷宫的大小(N),并使用二维数组...对于初学者来说,这是一个很好的学习C语言编程、图形界面设计和算法实现的实践项目。
本资料包“C语言经典算法”正为这样的目标提供了宝贵的资源,它包含了100个C语言的经典算法实例,旨在帮助初学者巩固基础,提升编程能力。 1. **基础算法**:这100个算法涵盖了基础的数学运算、逻辑控制、字符串...
在IT领域,遍历是一种常见的算法技术,用于访问或处理数据结构(如数组、链表、树或...理解这些问题的解决方案有助于深化对计算机科学基础的理解,特别是对于学习算法和数据结构的初学者来说,这是一个很好的实践案例。
根据提供的文件信息,我们可以归纳出以下相关知识点: ### 1. 求两个整数的最大公约数(H.C.F)及最小公倍数(L...这些题目覆盖了 C 语言的基础语法、字符串处理、递归算法、图形打印等多个方面,适合初学者进行练习。
《C语言精彩编程200例》是一本旨在帮助初学者和有一定基础的开发者深入了解C语言编程技巧的资源集合。这个压缩包包含了丰富的实例代码,旨在通过实践来增强读者的编程能力,尤其对于数据结构的理解和应用有显著的...
【基于C语言实现的支持自己创建迷宫,并求解最短路径】是一个有趣且富有挑战性的编程项目,适合初学者和进阶学习者提升技能。这个项目涵盖了基础的C语言编程,数据结构,以及算法设计等多个核心知识点。下面将对这些...
本项目可能采用了二维数组,因为这种方式更符合初学者的习惯。 2. **迷宫生成**:迷宫生成算法有很多种,如深度优先搜索(DFS)、Prim算法等。DFS通常用于生成连通的迷宫,它随机选择一个未访问的相邻单元格并标记...
以上总结的知识点涵盖了C语言编程中的多个核心概念和技术,对于初学者理解和掌握C语言编程具有重要意义。通过实践这些题目,可以加深对C语言语法的理解,提高编程技巧,并为更复杂的问题解决打下坚实的基础。同时,...
"16个C语言的课程设计案例包含讲解打包下载" 提供了一个丰富的资源库,帮助学生和初学者深入理解和运用C语言。 这个资源包可能包含16个不同的项目,每个项目都是一个独立的课程设计案例,涵盖了C语言的各种应用领域...
"C语言基础课程课件.ppt"是一份专为初学者设计的教育资源,旨在教授C语言的基础知识,特别是关于指针和结构体这两个核心概念。 首先,我们要理解指针是C语言中的一个关键特性。指针可以被看作是内存地址的别名,它...
### C语言难点分析整理 #### 变量的作用域和存储类别 在C语言中,变量的作用域决定了在程序...通过对以上知识点的深入理解和实践,可以帮助初学者更好地掌握C语言的核心概念和技术,从而更高效地进行程序设计和开发。
《C语言算法程序集-徐士良》是一个包含大量C语言编程中经典算法实现的资源集合,对于想要深入理解和掌握计算机科学基础,尤其是算法设计与分析的初学者或专业人士来说,这是一个不可多得的学习材料。C语言作为底层...
在计算机科学中,最短路径问题是一个经典的图论问题,主要目标是找到网络中的两个节点之间最短的路径。这个问题有多种解决方案,其中最著名的包括...对于学习C语言和图论的初学者来说,这是一个很好的实践案例。
本资源"1000个C语言算法程序源码"为初学者提供了丰富的实践材料,旨在帮助读者深入理解和掌握C语言算法的运用。 这些源码涵盖了基础算法到高级算法,包括排序、搜索、图论、动态规划、字符串处理、数据结构等各个...
这个"C语言算法教程(txt文档)"是为初学者和有经验的开发者提供的一份详细指南,旨在帮助他们理解和掌握如何在C语言中实现算法。通过阅读这份txt文档,你可以深入学习到C语言中的数据结构和算法设计。 1. **基础...
标题中的“纯C语言迷宫源码.rar”指的是一个使用C语言编写的迷宫生成...通过研究这个C语言迷宫源码,不仅可以提升C语言编程技能,还能加深对算法和软件开发流程的理解,对于初学者和有经验的开发者都有很大的学习价值。
"C语言学习大纲__郝斌(讲解)"是为初学者提供的一门入门课程,旨在帮助学习者系统地理解和掌握C语言的基础知识。 1. **C语言的起源与发展**: C语言起源于1970年代,由丹尼斯·里奇和肯·汤普逊在贝尔实验室开发,...