稀疏矩阵和广义表子系统.doc_第1页
稀疏矩阵和广义表子系统.doc_第2页
稀疏矩阵和广义表子系统.doc_第3页
稀疏矩阵和广义表子系统.doc_第4页
稀疏矩阵和广义表子系统.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#include#include#include#include#define SMAX 100typedef struct SPNode/定义三元组int i,j,v;/三元组非零元素的行、列和值typedef struct sparmatrix/定义稀疏矩阵int rows,cols,terms;/稀疏矩阵行、列和非零元素的个数SPNode dataSMAX;/三元组表;typedef struct linknode/定义广义表int tag;/区分原子项或子表的标志位linknode *link;union data_sublist/存放下一个元素的地址char data;/存放原子的值linknode *sublist;/存放子表的指针node;sparmatrix CreateSparmatrix()/创建稀疏矩阵sparmatrix A;printf(ntt请输入稀疏矩阵的行、列和非零元素的个数(用逗号隔开):);scanf(%d,%d,%d,&A.rows,&A.cols,&A.terms);for(int n=0;n=A.terms-1;n+)printf(ntt输入非零元素的值(格式:行号,列号,值):);scanf(%d,%d,%d,&A.datan.i,&A.datan.j,&A.datan.v);return A;sparmatrix Trans(sparmatrix A)sparmatrix B;B.rows=A.cols;B.cols=A.rows;B.terms=A.terms;for(int n=0;n=A.terms-1;n+)B.datan.i=A.datan.j;B.datan.j=A.datan.i;B.datan.v=A.datan.v;return B;void ShowSparmatrix(sparmatrix A)int k;printf(ntt);for(int x=0;x=A.rows-1;x+)for(int y=0;y=A.cols-1;y+)k=0;for(int n=0;n=A.terms-1;n+)if(A.datan.i)=x&(A.datan.j=y)printf(%8d,A.datan.v);k=1;if(k=0)printf(%8d,k);printf(ntt);void SearchSparmatrix(sparmatrix A,int s) /查找稀疏矩阵中非零元素int n,t;t=A.terms;for(n=0;ntag=0;gh-node.data=*s;gh-link=NULL;elsegh=new linknode;gh-tag=1;p=gh;s+;strncpy(subs,s,len-2);subslen-2=o;doDisastr(subs,hstr);r=CreateGL(hstr);p-node.sublist=r;q=p;len=strlen(subs);if(len0)p=new linknode;p-tag=1;q-link=p;while(len0);q-link=NULL;return gh;void Showvl(linknode *gnode)linknode *p,*q;if(gnode)dop=gnode-node.sublist;q=gnode-link;while(q&p&!p-tag)printf(%c,p-node.data);p=q-node.sublist;q=q-link;if(p&!p-tag)printf(%c,p-node.data);break;elseif(!p)printf();elseShowvl(p);if(q)printf(,);gnode=q;while(gnode);printf(b);int Search(linknode *gnode,char x)int find=0;if(gnode!=NULL)if(!gnode-tag&gnode-node.data=x)return 1;else if(gnode-tag)find=Search(gnode-node.sublist,x);if(find)return 1;elsereturn Search(gnode-link,x);elsereturn 0;void vastlist()int ch=1,choice;char x;char strSMAX ;linknode *vastlist=NULL;while(ch)printf(n);printf(ntt 广义表n );printf(ntt*);printf(ntt* 1-新建 *);printf(ntt* 2-查找 *);printf(ntt* 3-显示 *);printf(ntt* 0-返回 *);printf(ntt*);printf(nntt 请输入菜单号:(0-3):);scanf(%u,&choice);switch(choice)case 1:printf(ntt新建广义表:);scanf(%s,&str);vastlist=CreateGL(str);break;case 2:if(vastlist=NULL)printf(广义表为空!n);elseprintf(输入要查找的广义表的元素:n);scanf(%s,&x);if(Search(vastlist,x)=1)printf(该元素在广义表中存在!n);elseprintf(该元素在广义表中不存在!n);break;case 3:if(vastlist=NULL)printf(广义表为空!n);elseprintf(ntt);printf();Showvl(vastlist);break;case 0:ch=0;break;if(choice=1|choice=2|choice=3)printf(ntt);system(pause);system(cls);elsesystem(cls);void main()int ch=1,choice;while(ch)printf(n);printf(ntt 稀疏矩阵和广义表子系统n);printf(ntt*);printf(ntt* 1-稀疏矩阵 *);printf(ntt* 2-广 义 表 *);printf(ntt* 0-退 出 *);printf(ntt*);printf(nntt 请输入菜单号:(0-2):);sca

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论