日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

多项式相加链表

發布時間:2023/12/2 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 多项式相加链表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

#include <stdio.h> #include <stdlib.h> typedef struct Node //一個項節點 { int modulus; //系數 int cover; //冪 struct Node* next; }List; void creatList(List *&l) //創建多項式鏈表 { List* r; List* s; int n; l = (List*)malloc(sizeof(Node)); r = l; printf("多項式的項數:"); scanf("%d",&n); printf("依次輸入%d個項的系數和冪/n",n); while(n--) { s = (List*)malloc(sizeof(List)); scanf("%d",&s->modulus); scanf("%d",&s->cover); r->next = s; r = s; } r->next = NULL; } void printList(List *l) //打印多項式 { List* r; r = l->next; while(r!=NULL) { printf("%dy^%d",r->modulus,r->cover); if(r->next!=NULL) printf("+"); r = r->next; } printf("/n"); } int cmpList(List *l1,List *l2) //比較冪 { if(l1->cover==l2->cover) { return 0; } else if(l1->cover>l2->cover) { return 1; } return -1; } void sortList(List*& l) //將多項式鏈表按冪降序排列 { List* r; List* p; List* q; List* s = NULL; r = l; p = r->next; q = p->next; while(q!=s) { while(q!=s) { if(cmpList(p,q)==-1) { r->next = q; p->next = q->next; q->next = p; r = q; p = r->next; q = p->next; } else { r = p; p = r->next; q = p->next; } } s = p; r = l; p = r->next; q = p->next; } } void addList(List *l1,List *l2,List *&l3)//多項式鏈表相加 { l3 = (List*)malloc(sizeof(List)); List *r = l1->next; List *p = l2->next; List *q = l3; List *s; while(r&&p) { switch(cmpList(r,p)) { case 1: s = (List*)malloc(sizeof(List)); s->modulus = r->modulus; s->cover = r->cover; q->next = s; q = s; q->next = NULL; r = r->next; break; case -1: s = (List*)malloc(sizeof(List)); s->modulus = p->modulus; s->cover = p->cover; q->next = s; q = s; q->next = NULL; p = p->next; break; case 0: s = (List*)malloc(sizeof(List)); if(r->modulus-p->modulus==0) { r = r->next; p = p->next; free(s); break; } else { s->modulus = r->modulus+p->modulus; s->cover = r->cover; q->next = s; q = s; q->next = NULL; r = r->next; p = p->next; break; } } } while(r) { s = (List*)malloc(sizeof(List)); s->modulus = r->modulus; s->cover = r->cover; q->next = s; q = s; q->next = NULL; r = r->next; } while(p) { s = (List*)malloc(sizeof(List)); s->modulus = p->modulus; s->cover = p->cover; q->next = s; q = s; q->next = NULL; q = q->next; } } int main() { List *l1; List *l2; List *l3; creatList(l1); sortList(l1); printList(l1); creatList(l2); sortList(l2); printList(l2); addList(l1,l2,l3); printf("相加后結果為:/n"); printList(l3); free(l1); free(l2); free(l3); }

轉載于:https://www.cnblogs.com/WIT-Evan/archive/2010/08/14/7291520.html

總結

以上是生活随笔為你收集整理的多项式相加链表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。