第二次資料結構試驗
老師給出的程式比較齊全,直接進行稍微修改就可以實現相乘了,僅僅是個雙迴圈而已,其他地方基本沒有難點了,主要是鍊錶的操作,自己做的比較粗糙,不過暫時功能考慮的還算可以.....
今天早上一點多完善的,但是想提交的時候,電腦沒電自動關機了......然後到現在提交了.......
/*
根據給出的一元多項式的加法寫出一元多項式的乘法運算,要求用鍊錶實現,
如果某一項的係數為零,提示重新輸入,最終結果以橫式輸出....
*/#include "stdio.h"
#include "stdlib.h"
#include "math.h"
#define null 0//表示為空
typedef struct//定義結構體表達每一項的資料
term;
typedef struct lnode//定義鍊錶
*link,*linklist;
int cmp(term a,term b)//自定義比較函式
else }
void orderinsert(linklist &l,term e,int (*comp)(term,term))//順序插入
o=(link)malloc(sizeof(lnode));
o->data=e;//賦值
q->next=o;o->next=p;//生成連線鍊錶
}int locateelem(linklist l,term e,link &s,link &q,int (*comp)(term,term))
//查詢鍊錶中是否有某一項
if(!p)//未查找到,證明這一項不存在
else //查詢到 }
void delnext(linklist &l,link s)//刪除
void orderinsertmerge(linklist &l,term e,int (*compara)(term,term))
//順序插入合併函式
} else//否則 }
void creatpolyn (linklist &p,int m)//建立鍊錶
for(link q=lb->next;q;q=q->next)//順序插入 b 表的每乙個元素 }
void mul(linklist la,linklist lb,linklist &lc) //鍊錶相乘
;//求出當前項的資料
orderinsertmerge(lc,tp,cmp);//順序插入合併
} }}void printpolyn(linklist p)//橫式輸出,需要考慮的多了點
//控制輸出係數
if(tp.coef==-1)//係數為-1
}else if(tp.coef==1&&tp.expn==0)//係數為1 指數為0
else if(tp.coef!=1)//其他係數只要不等於1,就正常輸出係數
if(tp.expn!=0)//指數為零的不輸出 x
}kase=1;
} printf("\n\n");
if(!kase) }
void slove(linklist l1,linklist l2,linklist l3,linklist l4)//實現功能
else if(chose==2)
else if(chose==3)
else }
int main()
} printf("\t謝謝使用!\n");
return 0;
}
繼續在修正中完善!
資料結構 鍊錶 二
上篇部落格詳細介紹了鍊錶的基礎功能增刪改查,但是鍊錶的主要難度是在鍊錶的逆序上,下面主要介紹鍊錶逆序。1 鍊錶逆序 一 假設當前有5個結點,head a1 a2 a3 a4 a5,他們的頭指標是head。我們的思路便是將a1作為當前元素一直往後遍歷,並且將a1後面的資料依次挪到head之後。在第一次...
資料結構 二 鍊錶
鍊錶,就是鍊錶嘛,下面是鍊錶的基本操作 include include include include pragma warning disable 4996 typedef struct mylist li li createlist int n 建立含有n個資料的鍊錶,返回頭結點 void in...
資料結構(二)鍊錶
本文目錄 1 什麼是鍊錶 2 鍊錶抽象資料型別 3 單向鍊錶 3.1 插入操作 3.1.1 在煉表頭插入 3.1.2 在鍊錶尾插入 3.1.3 在鍊錶中間任意位置插入 3.2 刪除查詢 3.2.1 在煉表頭刪除 3.2.2 在鍊錶尾刪除 3.2.3 在鍊錶中間任意位置刪除 4 雙向鍊錶 4.1 插入...