用c语言链表编写便利店零售系统,链表实现多项式求和(C语言)
鏈表實現多項式求和(C語言)0
aebgt2013.06.26瀏覽270次分享舉報
1 多項式求和中兩個鏈表合并問題,請各位大俠幫忙啊
#include
#include
typedef struct node
{
float coef;
int exp;
struct node *next;
}link,*linklist;
linklist creatployn ()
{
linklist head,temp,now;
temp=now=(linklist)malloc(sizeof(link));
printf("請輸入該項系數和指數:\n");
scanf("%f,%d",&temp->coef,&temp->exp);
temp->next=NULL;
if (temp->coef==0.0||temp->exp<0)
{
head=NULL;
free(now);
}
else head=now;
while (temp->coef!=0.0&&temp->exp>=0)//
{
now->next=temp;
now=temp;
temp=(linklist)malloc(sizeof(link));
printf("請輸入該項系數和指數:\n");
scanf("%f,%d",&temp->coef,&temp->exp);
}
free(temp);
now->next=NULL;
return(head);
}
void printployn(linklist head)
{
linklist p=head;
int n=1;
printf("該表達式為:\n");
if(p==NULL)
return;
while(p!=NULL)
{
if(n==1) {printf("%fX^%d",p->coef,p->exp); n++;}
else printf("+%fX^%d",p->coef,p->exp);
p=p->next;
}
}
int compare(int x,int y) //比較兩個多項式的指數
{
if(x
else if(x=y) return 0;
else return 1;
}
linklist addployn(linklist la,linklist lb) //兩個多項式的合并(此處在la表上與lb表對應元素作比較,做出響應的添加刪除操作,最后返回la)
{
linklist head,temp=(linklist)malloc(sizeof(link)),qa=la,qb=lb,tempa,tempb;
head=temp;
temp->next=NULL;
int a,b;
while(qa&&qb)
{
a=qa->exp; b=qb->exp;
switch (compare(a,b))
{
case -1:
temp->next=qa; temp=qa; qa=qa->next;break;//將la表的結點作為當前結點,并將la指向la表當前結點的下一結點
case 0: //合并指數相同的項
qa->coef+=qb->coef; //系數相加
if(qa->coef!=0) //系數不為零,將la表的結點作為當前結點,并釋放lb表結點,再分別讓qa,qb指向各自的下一結點
{
temp->next=qa;//
temp=qa;
qa=qa->next;
}
else //系數為零將當前la,lb表重的結點釋放,并指向各自的下一點
{
tempa=qa;
qa=qa->next;
free(tempa);
}
tempb=qb; qb=qb->next; free(tempb);
break;
case 1:
temp->next=qb; temp=qb; qb=qb->next; //將lb表結點插入la表作為當前結點,并使qb指向下一結點
break;
}
}
if(qa) temp->next=qa;
else temp->next=qb;
tempa=head;
head=head->next;
free(tempa);
return(head);
}
void main()
{
linklist LA=creatployn();
printployn(LA);
linklist LB=creatployn();
printployn(LB);
linklist LC=addployn(LA,LB);
printployn(LC);
}
基本思路是按指數從小到大輸入系數和指數,到0,0結束該多項式輸入。求和部分,不引入新表,而在原來的a表上將b表元素進行插入和刪除的操作。
我對鏈表操作概念很不清楚。在求和函數中的temp必須要給他申請空間么?我最初就把temp設成普通指針變量,通過移動他的位置來指向當前結點,但是好像鏈表一點都沒鏈起來。麻煩哪位好心人能幫我詳細解釋一下這個鏈接的過程啊:)不勝感激啊!
講的詳細我追加分數!關于鏈表的問題已經困擾我很久了。期待高人點撥迷津~~~
總結
以上是生活随笔為你收集整理的用c语言链表编写便利店零售系统,链表实现多项式求和(C语言)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 单片机控制lcd序c语言,51单片机驱动
- 下一篇: c语言 get post请求,URL G