字符串稀疏矩阵实验实验四.doc
文本预览下载声明
实验 四 字符串、稀疏矩阵实验
实验目的及要求
熟悉字符串类型的实现方法,并完成串的一些基本操作;
掌握稀疏矩阵的三元组顺序表存储表示,并实现矩阵的转置运算。
二.实验内容:
编程实现两个串S1和S2的比较。(要求自己设计串的存储结构,并编写比较函数,不要调用系统提供的函数)
编程实现稀疏矩阵的三元组顺序表示方法及基本操作的实现(建立、输出、转置等)。
(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);
主函数:
#includestdio.h
#includestdlib.h
#include1.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;
}
功能函数:
#includestdio.h
#includestdlib.h
#include1.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.lengthi=T.length)
{
if(S.ch[i]T.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.lengthT.length)
{
return dayu;
}
if(S.lengthT.length)
{
return xiaoyu;
}
return OK;
}
运行结果:
(2)编程实现稀疏矩阵的三元组顺序表示方法及基本操作的实现(建立、输出、转置等)。
程序代码部分:
头文件:
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define maxsize 30
typedef in
显示全部