字符串、稀疏矩阵实验(实验四)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四字符串、稀疏矩阵实验
一.实验目的及要求
(1)熟悉字符串类型的实现方法,并完成串的一些基本操作;
(2)掌握稀疏矩阵的三元组顺序表存储表示,并实现矩阵的转置运算。
二.实验内容:
(1)编程实现两个串S1和S2的比较。(要求自己设计串的存储结构,并编写比较函数,不要调用系统提供的函数)
(2)编程实现稀疏矩阵的三元组顺序表示方法及基本操作的实现(建立、输出、转置等)。
(3)编程实现稀疏矩阵的十字链表存储表示及基本操作的实现(建立、输出等)。三.实验主要流程、基本操作或核心代码、算法片段(该部分如不够填写,请另加附页)(1)编程实现两个串S1和S2的比较。(要求自己设计串的存储结构,并编写比较函数,不要调用系统提供的函数)
程序代码:
头文件
#define OK 1
#define ERROR 0
#define OVERFLOW -1
#define dayu 1
#define xiaoyu -2
#define dengyu 0
typedef int Status;
typedef struct{
char *ch;
int length;
}HString;
Status StrAssign(HString &S);
Status StrCompare(HString S,HString T);
主函数:
#include"stdio.h"
#include"stdlib.h"
#include"1.h"
int main()
{
char c;//用于读取换行符,便于StrAssign函数中gets读取串的操作
HString S,T;
printf("请确定第一个字符串的长度\n");
scanf("%d",&S.length);
c=getchar();
StrAssign(S);//初始化S的ch部分
printf("请确定第二个字符串的长度\n");
scanf("%d",&T.length);
c=getchar();
StrAssign(T);//初始化T的ch部分
printf("两字符串的比较结果为:\n");
int a;//承载比较结果
a=StrCompare(S,T);//字符串比较函数
if(a==-2)
{
printf("第一个字符串小于第二个字符串\n");
}
else if(a==0)
{
printf("第一个字符串等于第二个字符串\n");
}
else if(a==1)
{
printf("第一个字符串大于第二个字符串\n");
}
else
{
printf("比较程序出错\n");
return ERROR;
}
return OK;
}
功能函数:
#include"stdio.h"
#include"stdlib.h"
#include"1.h"
//初设S,T
Status StrAssign(HString &S)
{
S.ch=(char *)malloc(sizeof(char)*(S.length+1));
if(!S.ch) exit(OVERFLOW);
printf("请输入相应长度的字符串\n");
gets(S.ch);
return OK;
}
//比较函数
Status StrCompare(HString S,HString T) {
int i=0;
while(i<=S.length&&i<=T.length)
{
if(S.ch[i] { return xiaoyu; } if(S.ch[i]==T.ch[i]) { i++; } if(S.ch[i]>T.ch[i]) { return dayu; } } if(S.length==T.length) { return dengyu; } if(S.length>T.length) { return dayu; } if(S.length { return xiaoyu; } return OK; } 运行结果: (2)编程实现稀疏矩阵的三元组顺序表示方法及基本操作的实现(建立、输出、转置等)。 程序代码部分: 头文件: #define OK 1 #define ERROR 0 #define OVERFLOW -2 #define maxsize 30 typedef int Status; typedef int ElemType; typedef struct { int i,j; ElemType e; }Triple; typedef struct { Triple data[maxsize]; int mu,nu,tu; }TSMatrix; Status Init(TSMatrix &trip); void visit(TSMatrix trip); void Transpose(TSMatrix trip,TSMatrix &trip1); 主函数: #include"stdio.h" #include"stdlib.h" #include"1.h" void main() { TSMatrix trip; printf("请输入矩阵规模(行和列数,空格隔开)\n"); scanf("%d%d",&trip.mu,&trip.nu); Init(trip); printf("\n------------------------------\n"); printf("\n原矩阵为\n"); visit(trip); TSMatrix trip1; Transpose(trip,trip1); printf("\n转置矩阵为\n"); visit(trip1); } 功能函数: #include"stdio.h" #include"stdlib.h" #include"1.h" //原矩阵存储 Status Init(TSMatrix &trip)