稀疏矩阵建立十字链表c语言,实验6-稀疏矩阵十字链表的存储.doc
實驗6-稀疏矩陣十字鏈表的存儲.doc
-/電子信息學院實驗報告書課程名 數據結構 題 目 稀疏矩陣十字鏈表的存儲 實驗類別 設計 班 級 BX1001 學 號 24 姓 名 肖望龍 2011年 10 月 23日-/1、 實驗題目(1 掌握稀疏矩陣十字鏈表存儲的方法。(2 掌握稀疏矩陣的顯示、查找等基本方法。2、 實驗內容(1) 創建空的稀疏矩陣的十字鏈表存儲結構。(2) 稀疏矩陣十字鏈表的數據輸入。(3) 稀疏矩陣十字鏈表的數據顯示。(4) 稀疏矩陣十字鏈表的數據查找。3、 實驗要求(1) 利用C或c語言完成算法設計和程序設計。(2) 上機調試通過實驗程序。(3) 輸入右側矩陣A,檢驗程序運行結果。(4) 給出具體的算法分析,包括時間復雜度和空間復雜度。(5) 撰寫實驗報告(把輸入實驗數據及運行結果用抓圖的形式粘貼到實驗報告上)。4、 實驗步驟與源程序 實驗步驟1、 建立一個空的十字鏈表2、 輸入鏈表信息3、 輸入鏈表元素4、 查找鏈表元素5、 顯示鏈表元素 源代碼includeiostream.hincludestdio.hincludeiomanip.hincludestdlib.hstruct linknodeint rows,cols;linknode *down,*right;union vnextint v;linknode *next;node;;linknode *CreateMatlind int i,j,maxlin;linknode *hm,*cp100,*p;printfntt請輸入稀疏矩陣的行數,列數用逗號隔開 ;scanfd,d,if ij maxlini;else maxlinj;hmnew linknode;cp0hm; for int l1;lmaxlin;lpnew linknode;p-rows0;p-cols0;p-downp;p-rightp;cplp;cpl-1-node.nextp;cpmaxlin-node.nexthm;hmnew linknode;hm-rowsi;hm-colsj;return hm; linknode *Matlindlinknode *hm,int s linknode *cp100,*p,*q;int m,n,t;int i,j,k,maxlin;ihm-rows;jhm-cols;if ij maxlini;else maxlinj;cp0hm;for int l1;lmaxlin;lpnew linknode;p-rows0;p-cols0;p-downp;p-rightp;cplp;cpl-1-node.nextp;cpmaxlin-node.nexthm;for int x0;xs;xprintfntt請輸入非零元的行號,列號和值用逗號隔開 ;scanfd,d,d,pnew linknode;p-rowsm;p-colsn;p-node.vt;k1;qcpm;while kif q-rightcpm || q-right-colsnp-rightq-right;q-rightp;k0;else ifq-right-colsnp-rightq-right-right;q-rightp;k0;else ifq-right-colsnqq-right;k1;k1;qcpn;while kif q-downcpn || q-down-rowsmp-downq-down;q-downp;k0;else if q-down-rowsmp-downq-down-down;q-downp;k0;else if q-down-rowsmqq-down;k1;return hm;void ShowMatlindlinknode *hm int m,n;linknode *p,*q;mhm-rows;nhm-cols;qphm-node.next;pp-right;coutendlendl;printfntt;for int i1;im;ifor int j1;jn;jif p-rowsi else printf8c,0;if jn else if p-rightqpp-right;printfnntt;pq;qpp-node.next;pp-right;void SearchMatlindlinknode *hm,int s int m,n,k;linknode *p,*q;mhm-rows;nhm-cols;qphm-node.next;pp-right;k1;whilekif p-node.vsprintfntt 行 列 值n;printfntt元素位置2d 2d 2dn,p-rows,p-cols,p-node.v;k0;else if p-rightqpp-right;else pq;qpp-node.next;if phmprintfntt十字鏈表中無此元素 n;k0;pp-right;void mainint s,k,ch1;linknode *hmNULL;printftn新建十字鏈表; hmCreateMatlind; do printfntt請輸入非零元素個數 ;scanfd,if shm-rows*hm-colsprintfntt元素個數超標 應小于d個n,hm-rows*hm-cols;k1;elsek0;while k;hmMatlindhm,s; printfn顯示十字鏈表;if hmNULLprintfntt鏈表為空 n;elseShowMatlindhm;printfn查 找 元 素;if hmNULLprintfntt鏈表為空 n;elseprintfntt請輸入您要查找的元素 ;scanfd,SearchMatlindhm,s; 5、 測試數據與實驗結果(可以抓圖粘貼)6、 結果分析與實驗體會實驗結果基本達到了實驗要求。用十字鏈表存儲稀疏矩陣的基本思想是把每個非零元素作為一個節點存儲,節點中除了表示元素的行、列、值的三元組(I,j,v)以外還增加了倆個指針域列指針域down用來指向本列的下一個非零元素;行指針域指向本行的下一個非零元素知道了這些,實驗就方便了,雖然還有很多不完善。但多做練習才能更加熟練的使用稀疏矩陣。
總結
以上是生活随笔為你收集整理的稀疏矩阵建立十字链表c语言,实验6-稀疏矩阵十字链表的存储.doc的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机网络在我国的发展,04. 当前现状
- 下一篇: 升级php7_Drupal 8.8.0