抽象数据类型三元组Triplet基本操作与实现 严蔚敏版
这个博客基本操作大部分来自教材《数据结构C语言版》严蔚敏版,实现了书中的大部分功能,并且用了三个文件。
一个是主函数,一个是功能模块,一个是头文件定义,用VC6.0++完成
//头文件声明
#ifndef _FUNC_H
#define _FUNC_H
#define OK 1
#define ERROR 0
#define OVERFLOW -2typedef int Status;
typedef float ElemType;
typedef ElemType *Triplet; extern Status InitTriplet (Triplet &t,ElemType v1,ElemType v2,ElemType v3);
extern Status DestroyTriplet (Triplet t);
extern Status get(Triplet t,int i,ElemType &e);
extern Status put(Triplet &t,int i,ElemType e);
extern Status Max(Triplet t,ElemType &e);
extern Status Min(Triplet t,ElemType &e);
extern Status IsAscend(Triplet t);
extern Status IsDescend(Triplet t);
extern Status Average(Triplet t,ElemType &e);
int system(const char *string);
#endif
//功能模块
#include <stdio.h>
#include <stdlib.h>
#include "head.h"
//初始化
Status InitTriplet (Triplet &t,ElemType v1,ElemType v2,ElemType v3)
{t=(ElemType *)malloc(3*sizeof(ElemType)); if(!t) return OVERFLOW;t[0]=v1;t[1]=v2;t[2]=v3;return OK;
}
//销毁
Status DestroyTriplet (Triplet t)
{free(t); t=NULL;return OK;
}
//返回第i个值
Status get(Triplet t,int i,ElemType &e)
{if (i<1||i>3) return ERROR;e=t[i-1];return OK;
}
//置换
Status put(Triplet &t,int i,ElemType e)
{if (i<1||i>3) return ERROR; t[i-1]=e;return OK;
}
//判断升序
Status IsAscend(Triplet t)
{return (t[0]<t[1])&&(t[1]<t[2]);
}//判断降序
Status IsDescend(Triplet t)
{return (t[0]>=t[1])&&(t[1]>=t[2]);
}//求最大值
Status Max(Triplet t,ElemType &e)
{ e=(t[0]>=t[1])?((t[0]>=t[2])?t[0]:t[2]):((t[1]>=t[2])?t[1]:t[2]);return OK;
}//求最小值
Status Min(Triplet t,ElemType &e)
{ e=(t[0]<=t[1])?((t[0]<=t[2])?t[0]:t[2]):((t[1]<=t[2])?t[1]:t[2]);return OK;
}
//求平均值
Status Average(Triplet t,ElemType &e)
{e=(t[0]+t[1]+t[2])/3;return OK;
}
//主函数
#include <stdio.h>
#include <stdlib.h>
#include "head.h"
void main()
{Triplet p;ElemType e,v1,v2,v3;int i;char select;printf("输入三个数,建立一个三元组\n");scanf("%d%d%d",&v1,&v2,&v3); if (InitTriplet(p,v1,v2,v3)==OVERFLOW) printf("分配失败,退出程序!");else do {printf("\n");printf("1:取三元组第i个元素\n");printf("2:判断三元组元素是否递增\n");printf("3:求最大值\n");printf("4:置换第i个元素\n");printf("5:判断三元组元素是否递减\n");printf("6:求最小值\n");printf("7:求三元组平均值\n");printf("0:结束!\n");printf("请输入选择!\n");getchar();scanf("%c",&select);switch (select) {case '1': //getprintf("\ni=");scanf("%d",&i); if (get(p,i,e)==ERROR) printf("i值不合法\n");else printf("第%d个元素的值为:%d\n",i,e); break; case '2': //IsAscendprintf("3个元素分别为:%d,%d,%d\n",p[0],p[1],p[2]);printf("\n");if (IsAscend(p)==1) printf("三元组递增有序\n");else printf("三元组非递增有序\n"); break; case '3': //Maxprintf("3个元素分别为:%d,%d,%d\n",p[0],p[1],p[2]);Max(p,e); printf("最大值是:%d\n",e); break;case '4': //put printf("\n");printf("3个元素分别为:%d,%d,%d\n",p[0],p[1],p[2]);printf("请输入想置换的第i个元素");printf("\ni=");scanf("%d",&i); printf("\nx=");scanf("%d",&e); if (put(p,i,e)==ERROR) printf("i值不合法\n");else printf("置换第%d个元素后的3个元素分别为:%d,%d,%d\n",i,p[0],p[1],p[2]);break;case '5': //IsDescendprintf("\n");printf("3个元素分别为:%d,%d,%d\n",p[0],p[1],p[2])if (IsDescend(p)==1) printf("三元组递减有序\n");else printf("三元组非递减有序\n"); break;case '6': printf("\n");printf("3个元素分别为:%d,%d,%d\n",p[0],p[1],p[2]);Min(p,e);printf("最小值是:%f\n",e); break;case'7':printf("\n");printf("3个元素分别为:%d,%d,%d\n",p[0],p[1],p[2]);Average(p,e);printf("平均值是:%.2f\n",e); break;case'0':printf("操作结束!"); break;default: printf("输入选择出错!\n");}// end of switch}while(select!='0'); //end of whileDestroyTriplet(p);
}// end of main
三个文件放在一起放在一个工程中才能运行
抽象数据类型三元组Triplet基本操作与实现 严蔚敏版相关推荐
- 数据结构--抽象数据类型三元组Triplet的表示和实现
抽象数据类型三元组Triplet的表示和实现. 数据类型是一个值的集合和定义在这个值集上的一组操作的总称.按"值"的不同特性,高级程序语言中的数据类型可分为两类:一类是非结构的原子 ...
- 抽象数据类型三元组表示与实现
1,抽象数据类型概念: (1)由用户定义,用以表示应用问题的数据模型:(2)由基本的数据类型组成, 并包括一组相关的操作: 2,抽象数据类型用三元组表示:ADT = (D,S,P) D: 数据对象 ...
- 数据结构实验(严蔚敏版)----栈与队列
数据结构(严蔚敏版)配套实验报告册--栈与队列基本操作 #include <stdio.h> #include <malloc.h> #include <stdlib.h ...
- 严蔚敏版数据结构(C语言版)算法实现代码
严蔚敏版数据结构(C语言版)算法实现代码 数据结构(C语言版)代码实现 线性表 顺序表 链表 单向链表 静态链表01 静态链表02 双向循环链表 栈与队列 栈 顺序栈 进制转换 行编辑器 未完待续.. ...
- 严蔚敏版《数据结构 (C语言版)》和《数据结构题集》(一)
这里用的是严蔚敏版<数据结构 (C语言版)>和<数据结构题集>,深感自己的代码写得又渣又无力,打算把这本书好好琢磨透彻,里面的算法和模板都实现一遍,题目也都做一遍.最终能够做到 ...
- 严蔚敏版《数据结构 (C语言版)》和《数据结构题集》(五)——栈和队列...
栈的顺序表实现 1 #include <iostream> 2 #include <stdlib.h> 3 #include <stdio.h> 4 #define ...
- 数据结构头文件《Fundamentals of Data Structures in C (2nd Edition) 》/严蔚敏版《数据结构》
#ifndef _PUBLIC_H_ #define _PUBLIC_H_#include <malloc.h>//动态分配储存空间 #include <stdlib.h> # ...
- 《数据结构与算法基础 严蔚敏版》第一章 绪论
菜鸟笔记,不定时更新... 链接:https://pan.baidu.com/s/1z-kFKiNaezO0k2BWQ8l1Hw 提取码:asdf 一.数据结构的基本概念: 1.数据.数据元素.数据 ...
- 有关数据结构基础知识(数据结构 严蔚敏版)
1. 数据结构是一门研究非数值计算程序设计中的操作对象 以及这些对象之间的关系和操作的学科 2. 研究包括逻辑结构和存储结构 1) 逻辑结构(从具体问题抽象出来的数学模型)分为 集合结构 线性结构 树 ...
最新文章
- linux性能优化实战-内存性能指标
- samtools merge_【生信工具】Samtools 安装与使用 | “十年以后,工具难免沦为朋友”...
- 第十六周 个人项目开发流程
- POJ 2299 Ultra-QuickSort(树状数组+离散化)
- 2014年最新前端开发面试题
- Git忽略项目中的指定的文件
- TensorFlow书籍
- Win10 iot 配置防火墙限制应用部署
- python面向对象实验报告_20192310 实验三《Python程序设计》实验报告
- Zephyr下计算耗时
- JavaScriptjQuery.HTML5事件
- 苹果悬浮球_手机轻松实现多个系统!安卓手机运行苹果iOS系统?期待!
- 手电筒app制作实录
- 单片机程序配置成开漏输出_单片机I/O口推挽与开漏输出详解
- OCR扫描识别录入之汽车车架号(VIN码)识别查询系统
- 电子基础元器件——电阻器
- matlab连通区域统计,MATLAB bwlabel函数 统计连通区域
- 51nod 1548 欧姆诺姆和糖果【思维+分类讨论】
- MathType怎么编辑等号带点
- 995.K连续位的最小翻转次数(唯唯诺诺)
热门文章
- Vivado HLS #pragma 学习笔记(一)
- 关于评审--从思想到落地
- IntelliJ IDEA自动生成注释的author
- 互联网日报 | 微信公众号界面再改版;快手发布“快手联盟”;首家农商行理财子公司获批开业...
- 华为、小米已成老年手机市场主力—1.5万条老年手机电商数据解读
- RLC元件上电压,电流关系
- spring的task和quartz的区别
- LInux 下 Anaconda多环境切换
- 844. 走迷宫 + BFS
- Windows日志浅析