資料結構試驗二 鍊錶

2021-07-05 19:41:32 字數 1813 閱讀 8062

第二次資料結構試驗

老師給出的程式比較齊全,直接進行稍微修改就可以實現相乘了,僅僅是個雙迴圈而已,其他地方基本沒有難點了,主要是鍊錶的操作,自己做的比較粗糙,不過暫時功能考慮的還算可以.....

今天早上一點多完善的,但是想提交的時候,電腦沒電自動關機了......然後到現在提交了.......

/*

根據給出的一元多項式的加法寫出一元多項式的乘法運算,要求用鍊錶實現,

如果某一項的係數為零,提示重新輸入,最終結果以橫式輸出....

*/#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 插入...