




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、*題目:編寫稀疏矩陣三元組表的存儲程序。* 編寫稀疏矩陣三元組表創(chuàng)建、顯示、轉(zhuǎn)置和查找程序。* 稀疏矩陣二級菜單形式如下:* 稀疏矩陣的三元組存儲* * * 1-新 建 * * 2-轉(zhuǎn) 置 * * 3-查 找 * * 4-顯 示 * * 0-返 回 * * 請選擇菜單號(0-4):*題目:編寫建立廣義表的程序。* 編寫廣義表的顯示和查找程序。* 廣義表二級菜單形式如下:* 廣 義 表* * * 1-新 建 * * 2-查 找 * * 3-顯 示 * * 0-返 回 * * 請選擇菜單號(0-3):/*題目:設(shè)計選擇式菜單,其一級菜單形式如下:* 稀疏矩陣和廣義表子系統(tǒng)* * * 1-稀疏矩陣
2、* * 2-廣 義 表 * * 0-返 回 * * 請選擇菜單號(0-2):*/#include <stdio.h>#include <stdlib.h>#include <string.h>#define SPAMAX 100 /三元組非零元素的最大個數(shù)#define GLMAX 100typedef struct /定義三元組 int x, y, v; /三元組非零元素的行,列,值spnode;typedef struct /定義稀疏矩陣 int rows, cols, num; /稀疏矩陣中非零元素的行,列,個數(shù) spnode dataSPAMAX;s
3、pamatrix;typedef struct glnode /定義廣義表 int tag; /標志位:0為原子,1為子表 struct glnode *glNext; /指向下一個元素的指針 union glDatas /共用存儲空間 char data; /值域 struct glnode *next; /指向子表的指針 datas;glnode;glnode *createGL(char s);void showGL(glnode *gHead);void change(char s, char str);void vastlist();int search(glnode *gHead,
4、 char x);spamatrix createSpamatrix();spamatrix transpose(spamatrix A);void showSpamatrix(spamatrix A);void findSpamatrix(spamatrix A, int v);void sparmatrix();/*Function: main()Description: 主調(diào)函數(shù)Calls: vastlist() sparmatrix()Input: NULLReturn: voidOthers: NULL*/void main() int ch, k = 1; while (k) sy
5、stem("pause"); system("cls"); printf("n 稀疏矩陣和廣義表子系統(tǒng)n"); printf("*n"); printf("* 1-稀疏矩陣 *n"); printf("* 2-廣 義 表 *n"); printf("* 0-返 回 *n"); printf("*n"); printf("請選擇菜單號(0-2):"); fflush(stdin); scanf("%d&quo
6、t;, &ch); switch(ch) case 1: sparmatrix(); /稀疏矩陣的三元組存儲 break; case 2: vastlist(); /廣義表 break; case 0: k = 0; break; default: k = 1; break; /*Function: sparmatrix()Description: 稀疏矩陣的三元組存儲Calls: createSpamatrix() transpose() showSpamatrix() findSpamatrix()Input: NULLReturn: voidOthers: NULL*/void
7、sparmatrix() int cho, v, k = 1; spamatrix A, B; A.num = 0; while (k) system("pause"); system("cls"); printf("n 稀疏矩陣的三元組存儲n"); printf("*n"); printf("* 1-新 建 *n"); printf("* 2-轉(zhuǎn) 置 *n"); printf("* 3-查 找 *n"); printf("* 4-顯 示 *n&
8、quot;); printf("* 0-返 回 *n"); printf("*n"); printf("請選擇菜單號(0-4):"); fflush(stdin); /清空輸入的緩存區(qū) scanf("%d", &cho); switch(cho) case 1: A = createSpamatrix(); /新建矩陣 break; case 2: if (A.num = 0) printf("三元組為空。n"); else B = transpose(A); /轉(zhuǎn)置 printf(&q
9、uot;轉(zhuǎn)置后的矩陣為:"); showSpamatrix(B); /顯示矩陣 break; case 3: printf("請輸入要查找的元素:"); scanf("%d", &v); findSpamatrix(A, v); /查找 break; case 4: if (A.num = 0) printf("三元組為空。n"); else printf("矩陣為:"); showSpamatrix(A); /顯示矩陣 break; case 0: k = 0; break; default:
10、k = 1; break; /*Function: createSpamatrix()Description: 創(chuàng)建稀疏矩陣的三元組存儲Calls: voidInput: NULLReturn: spamatrixOthers: NULL*/spamatrix createSpamatrix() spamatrix A; int i; /之后可以加入限制條件 printf("請輸入稀疏矩陣的行數(shù):"); scanf("%d", &A.rows); printf("請輸入稀疏矩陣的列數(shù):"); scanf("%d&qu
11、ot;, &A.cols); printf("請輸入稀疏矩陣中非零元素個數(shù):"); scanf("%d", &A.num); for (i = 0; i < A.num; i+) printf("請輸入第%d個元素的行數(shù):", i+1); scanf("%d", &A.datai.x); printf("請輸入第%d個元素的列數(shù):", i+1); scanf("%d", &A.datai.y); printf("請輸入第%d個元
12、素的值:", i+1); scanf("%d", &A.datai.v); return A;/*Function: transpose()Description: 轉(zhuǎn)置稀疏矩陣Calls: voidInput: A:spamatrix類型Return: spamatrixOthers: NULL*/spamatrix transpose(spamatrix A) spamatrix B; int k; B.rows = A.cols; /行數(shù)與列數(shù)交換 B.cols = A.rows; B.num = A.num; /元素數(shù)不變 for (k = 0;
13、k < B.num; k+) B.datak.x = A.datak.y; B.datak.y = A.datak.x; B.datak.v = A.datak.v; return B;/*Function: showSpamatrix()Description: 顯示稀疏矩陣Calls: voidInput: A:spamatrix類型Return: voidOthers: NULL*/void showSpamatrix(spamatrix A) int x, y, i, k; /按矩陣格式輸出,零元素自動補充 for (x = 0; x < A.rows; x+) for (
14、y = 0; y < A.cols; y+) k = 0; for (i = 0; i < A.num; i+) if (A.datai.x = x && A.datai.y = y) printf("%3d", A.datai.v); k = 1; if (k = 0) printf("%3d", k); printf("n"); /*Function: findSpamatrix()Description: 查找稀疏矩陣中的元素Calls: voidInput: A:spamatrix類型 v:要查找的
15、元素Return: voidOthers: NULL*/void findSpamatrix(spamatrix A, int v) int i; for (i = 0; i < A.num; i+) if (A.datai.v = v) printf("該元素的位置為:行:%3d,列:%3d。n", A.datai.x+1, A.datai.y+1); i = -1; break; if (i != -1) printf("矩陣不存在該元素。n"); /*Function: vastlist()Description: 廣義表Calls: cre
16、ateGL() showGL() search()Input: NULLReturn: voidOthers: NULL*/void vastlist() int choice, k = 1; char sGLMAX, x; glnode *gHead = NULL; while (k) system("pause"); system("cls"); printf("n 廣 義 表n"); printf("*n"); printf("* 1-新 建 *n"); printf("* 2-
17、查 找 *n"); printf("* 3-顯 示 *n"); printf("* 0-返 回 *n"); printf("*n"); printf("請選擇菜單號(0-3):"); fflush(stdin); scanf("%d", &choice); switch(choice) case 1: printf("新建廣義表:"); scanf("%s", s); gHead = createGL(s); /新建 break; cas
18、e 2: if (gHead = NULL) printf("廣義表為空。n"); else printf("請輸入要查找的廣義表的元素:"); scanf("%s", &x); if (search(gHead, x) = 1) /查找成功返回值 printf("該元素在廣義表中。n"); else printf("該元素不在廣義表中。n"); break; case 3: if (gHead = NULL) printf("廣義表為空。n"); else prin
19、tf("廣義表為:"); printf("("); showGL(gHead); /顯示 break; case 0: k = 0; break; default: k = 1; break; /*Function: createGL()Description: 新建廣義表Calls: change()Input: s:字符串Return: glnode *Others: NULL*/glnode *createGL(char s) glnode *gHead, *p, *q, *r; char strGLMAX, stpGLMAX; int len;
20、len = strlen(s); if (!strcmp(s, "()") /輸入的為空表 gHead = NULL; else if (len = 1) /輸入的只有一個元素 gHead = (glnode *)malloc(sizeof(glnode); gHead->tag = 0; /標志位顯示為原子 gHead->datas.data = *s; /值域賦值 gHead->glNext = NULL; /下一個為空 else /輸入的元素不唯一時 gHead = (glnode *)malloc(sizeof(glnode); gHead->
21、;tag = 1; /標志位顯示為子表 p = gHead; /保持指針 s+; strncpy(str, s, len-2); /去除前括號 strlen-2 = '0' do change(str, stp); /取表頭內(nèi)容 r = createGL(stp); /遞歸調(diào)用 p->datas.next = r; q = p; len = strlen(str); /計算表中剩余長度 if (len > 0) p = (glnode *)malloc(sizeof(glnode); p->tag = 1; q->glNext = p; while (l
22、en > 0); q->glNext = NULL; return gHead;/*Function: search()Description: 查找廣義表中的元素是否存在Calls: voidInput: gHead::廣義表 x:字符Return: intOthers: NULL*/int search(glnode *gHead, char x) int i = 0; if (gHead != NULL) /廣義表不為空 if (!gHead->tag && gHead->datas.data = x) /元素為原子存在 return 1; els
23、e if (gHead->tag) i = search(gHead->datas.next, x); /查找元素為子表存在 if (i) return 1; else return search(gHead->glNext, x); /查找下一個元素 else return 0; /*Function: change()Description: 區(qū)分表頭及其他部分Calls: voidInput: s:字符串(輸入者,也是保存剩余內(nèi)容) str:字符串(表頭的內(nèi)容)Return: voidOthers: NULL*/void change(char s, char str) char stpGLMAX; int i, j, r, k; i = j = r = k = 0; while (si && (si != ',' | k) if (si = '(') /字符串中是否含
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度時尚消費品代理進口及市場布局合同
- 二零二五年度退休科研人員合作研發(fā)聘用合同
- 二零二五學年度學生校車安全乘車環(huán)境改善與優(yōu)化協(xié)議
- 股權(quán)代持協(xié)議書標準模板:2025年度股權(quán)置換與重組范本
- 二零二五年度校園安全責任與學生家長參與合同
- 二零二五年度購物中心日常保潔與應急處理合同
- 三字經(jīng)中道理的故事解讀
- 旅游目的地營銷與品牌形象塑造研究
- 綠化零工勞務(wù)合同
- 產(chǎn)品供應和分銷合同
- 中小學領(lǐng)導班子包級包組包班制度
- 電網(wǎng)工程設(shè)備材料信息參考價(2024年第四季度)
- 2025年江蘇農(nóng)牧科技職業(yè)學院高職單招職業(yè)技能測試近5年常考版參考題庫含答案解析
- 2024年湖南鐵道職業(yè)技術(shù)學院單招職業(yè)技能測試題庫及答案解析word版
- 2023年蘇州衛(wèi)生職業(yè)技術(shù)學院高職單招(數(shù)學)試題庫含答案解析
- 2022年中國遠洋海運集團有限公司招聘考試題庫及答案解析
- 供應鏈管理課件第5章供應鏈合作伙伴選擇與評價
- 4D現(xiàn)場管理培訓ppt課件(PPT 45頁)
- 餐飲店面投資預算(900平方米)
- 小學生個人簡歷WORD模板
- 檢驗科危急值管理.
評論
0/150
提交評論