字符串、稀疏矩阵实验(实验四)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)

相关文档
最新文档