1、 cinT1i; input T2 size: T20=n;input T2 data:T2i;T1Compare(T1,T2)T20) return else if(T10T2i) return else if(T1i return =/SString.h:#includeusing namespace std;const int MAX=255;typedef unsigned char SStringMAX+1;char Compare(SString T1,SString T2); 运行结果:(2) 编程实现稀疏矩阵的三元组顺序表示方法及基本操作的实现(建立、输出、转置等)。/Main
2、.cppTSMatrix.hint main() TSMatrix T,M; int count;输入矩阵的行数,列数,非零元个数:M.muM.nuM.tu; for (count=1;count=M.tu;count+) coutM.datacount.jM.datacount.e; TransposeSMatrix(M,T);i j e=T.tu; T.datacount.i T.datacount.jT.datacount.e/TSMatrix.cppStatus TransposeSMatrix(TSMatrix M,TSMatrix &T) int col,p,q; T.mu=M.n
3、u;T.nu=M.mu;T.tu=M.tu; if(T.tu) q=1; for(col=1;col=M.nu;+col) for(p=1;pnext=NULL;Status DestroyQueue(LinkQueue & /销毁队列Q while(Q.front) Q.rear=Q.front-next; free(Q.front); Q.front=Q.rear;Status EnQueue (LinkQueue &Q,QElemType e) /插入元素a为Q的新的队尾元素 QNode *p; p=(QueuePrt)malloc(sizeof(QNode);p) exit(ERROR
4、); p-data=e;p- Q.rear-next=p; Q.rear=p;Status DeQueue (LinkQueue &Q,QElemType &e) /删除Q的队头元素,用e返回其值 if(Q.front=Q.rear) return ERROR; p = Q.front- e=p-data;next=p- if (Q.rear=p) Q.rear=Q.front; free(p);Status QueueEmpty(LinkQueue Q) /判断对是否为空 if(Q.front=Q.rear)return ERROR;void Menu(LinkQueue & /输出选择界面
5、 int select=1; QElemType e; while(select)-请选择以下功能:-1,入队-2,出队-3,判断队空-0,退出程序请输入你的选择select; switch (select) case 0:break; case 1: coute; if(EnQueue(Q,e) cout入队成功 break; case 2: if(DeQueue(Q,e)e出队 case 3: if(QueueEmpty(Q) cout此队不为空 else couttypedef int QElemType;typedef struct QNode QElemType data; stru
6、ct QNode * next;QNode,*QueuePrt; QueuePrt front; QueuePrt rear;LinkQueue;Q);/构造空队列/销毁队列QQ,QElemType e);/插入元素a为Q的新的队尾元素e);/删除Q的队头元素,用e返回其值Status QueueEmpty(LinkQueue Q);/判断对是否为空/输出选择界面#endifB顺序存储:/main.cpp:SqQueue.h SqQueue Q; if(InitQueue(Q)创建队成功 DestroyQueue(Q);/SqQueue.cpp:Status InitQueue(SqQueue
7、 & /创建空队列 Q.base=(QElemType *)malloc(MAXSIZE * sizeof(QElemType); if (!Q.base) exit(ERROR); Q.front=Q.rear=0;Status EnQueue(SqQueue & /插入元素e为Q的新队尾元素 if(Q.rear+1)% MAXSIZE) = Q.front) return ERROR; Q.baseQ.rear=e; Q.rear=(Q.rear+1)%MAXSIZE;Status DeQueue(SqQueue & /删除Q的对头元素,用e返回其值。 if(Q.front = Q.rea
8、r) return ERROR; e=Q.baseQ.front; Q.front=(Q.front+1)%MAXSIZE;Status SqQueueEmpty(SqQueue Q) /判断Q是否为空Status DestroyQueue(SqQueue & /销毁栈 free(Q.base);void Menu(SqQueue & /输出选择菜单 while (select)-请选择一下功能: 1,入队 2,出队 3,判断是否为空 0,退出程序你的选择是:输入插入的数据:队满队空 if(SqQueueEmpty(Q)队未空/SqQueue.h:#ifndef SQQUEUE_H#defin
9、e SQQUEUE_Hconst int MAXSIZE=100;const int MORE=100; QElemType *base; int front ; int rear;SqQueue;/创建空队列/插入元素e为Q的新队尾元素/删除Q的对头元素,用e返回其值。Status SqQueueEmpty(SqQueue Q);/判断Q是否为空/销毁栈/输出选择菜单/ CrossList.hstdio.h#define OK 1;#define ERROR 1;typedef struct OLNode struct OLNode *right,*down;OLNode,*OLink; O
10、Link *rhead,*chead;CrossList;Status CreateSMatrix_OL (CrossList &M);/ CrossList.cppCrossList.hM) int m,n,t,i,j,e,k; OLNode *p,*q;/ if(M) free(M); printf(mu,nu,tu :); scanf(%d %d %d,&m,&n,&t); M.mu=m;M.nu=n;M.tu=t; M.rhead=(OLink*)malloc(m+1)*sizeof(OLink);M.rhead)return ERROR;(M.chead=(OLink*)malloc
11、(n+1)*sizeof(OLink) return ERROR; for(k=1;ki=i;j=j;e=e; if(M.rheadi=NULL|M.rheadi-jj) p-right=M.rheadi;M.rheadi=p; else for(q=M.rheadi;(q-right)&q-right-jright);right=q-right;right=p; if(M.cheadj=NULL|M.cheadj-ii)down=M.cheadj;M.cheadj=p; for(q=M.cheadj;down)&down-i;down);down=q-down;down=p; printf(/main.cpp CrossList M; OLNode *q; CreateSMatrix_OL (M); i j en for (int i=1;i+) if(M.cheadi!=NULL) q=M.cheadi; while(q) printf(%5d%5d%5dn,q-i,q-j,q- q=q-五实验结果的分析与评价(该部分如不够填写,请另加附页)1.稀疏矩阵的存储比较难理解。储存过程较为复杂,但是用与各种计算时比较方便。实验成绩等级分为(90100分)优,(8089分)良,(70-79分)中,(6069分)及格,(59分)不及格。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1