• 【数据结构】三元组


    【数据结构】三元组

    代码目录树:

    • comedef.h
    • tripletapp.h
    • tripletmain.cpp

    comedef.h

    //变量定义

    //函数结果状态代码 
    #define TRUE 1
    #define FALSE 0 
    #define OK 1
    #define ERROR 0
    #define INFEASIBLE -1
    #define OVERFLOW -2
    typedef int ElemType;
    typedef int * Triplet;
    typedef int Status;
    

    tripletapp.h

    功能函数的实现

    //操作结果:构造三元组T,元素e1e2e3分别被赋以参数v1v2v3的值 
    Status InitTriplet(Triplet &T,ElemType v1,ElemType v2,ElemType v3);
    
    //操作结果:三元组T被销毁 
    Status DestroyTriplet(Triplet &T); 
    
    //初始条件:三元组T已存在 i是 1-3 
    //操作结果:用e返回T的第i元的值 
    Status Get(Triplet &T,int i,ElemType &e); 
    
    //初始条件:三元组T已存在 i是 1-3 
    //操作结果:改变T的第i元的值为e 
    Status Put(Triplet &T,int i,ElemType &e); 
    
    //初始条件:T已存在
    //操作结果:是升序排列就返回1,反之则0 
    Status IsAscending(Triplet T);
    
    //初始条件:T已存在
    //操作结果:是降序排列就返回1,反之则0
    Status IsDesending(Triplet T);
    
    //初始条件:T已存在
    //操作结果:用e返回最大的值 
    Status Max(Triplet T,ElemType &e);
    
    //初始条件:T已存在
    //操作结果:用e返回最小的值 
    Status Min(Triplet T,ElemType &e);
    
    
    //操作结果:构造三元组T,元素e1e2e3分别被赋以参数v1v2v3的值 
    Status InitTriplet(Triplet &T,ElemType v1,ElemType v2,ElemType v3){
    	//构造三元组T,依次设三个初值 v1v2v3 
    	T = (ElemType *)malloc(3 * sizeof(ElemType));//分配三个元素Elemtype类型的存储空间 
    	if(!T) exit(OVERFLOW);//分配存储空间失败 
    	T[0] = v1; 
    	T[1] = v2;
    	T[2] = v3;
    	return OK;
    }
    
    //操作结果:三元组T被销毁 
    Status DestroyTriplet(Triplet &T){
    	free(T);
    	T = NULL;
    	return OK;
    }
    
    //初始条件:三元组T已存在 i是 1-3 
    //操作结果:用e返回T的第i元的值 
    Status Get(Triplet &T,int i,ElemType &e){
    	if(i<1 ||i>3) return ERROR;
    	e = T[i-1];
    	return OK;
    }
     
    //初始条件:三元组T已存在 i是 1-3 
    //操作结果:改变T的第i元的值为e 
    Status Put(Triplet &T,int i,ElemType &e){
    	if(i<1 ||i>3) return ERROR;
    	T[i-1] = e;
    	return OK;
    }
     
    //初始条件:T已存在
    //操作结果:是升序排列就返回1,反之则0 
    Status IsAscending(Triplet T){
    	return (T[0] <= T[1]) && (T[1] <= T[2]);
    }
    
    //初始条件:T已存在
    //操作结果:是降序排列就返回1,反之则0
    Status IsDesending(Triplet T){
    	return (T[0] >= T[1]) && (T[1] >= T[2]);
    }
    
    //初始条件:T已存在
    //操作结果:用e返回最大的值 
    Status Max(Triplet T,ElemType &e){
    	e = (T[0] >= T[1]) ? ((T[0] >= T[2]) ? T[0] : T[2]) : ((T[0] >= T[2]) ? T[1] : T[2]);
    	return OK; 
    }
    
    //初始条件:T已存在
    //操作结果:用e返回最小的值 
    Status Min(Triplet T,ElemType &e){
    	e = (T[0] <= T[1]) ? ((T[0] <= T[2]) ? T[0] : T[2]) : ((T[0] <= T[2]) ? T[1] : T[2]);
    	return OK;
    }
    

    tripletmain.cpp

    主函数

    #include <stdio.h>
    #include <stdlib.h>
    #include "comedef.h"
    #include "tripletapp.h"
    
    main(){
    	int num;
    	Triplet T;
    	ElemType v1,v2,v3;
    	
    	printf("请输入3个数字 : ");
    	scanf("%d %d %d",&v1,&v2,&v3);
    	if(InitTriplet(T,v1,v2,v3)==1) 
    		printf("三元组构造成功!"); 
    
    	int i;
    	ElemType result;
    	while(1){
    		printf("请输入选项 : ");
    		scanf("%d",&num);
    		getchar();
    		switch (num){
    			case 1 : 
    				
    				printf("请输入要查看的第i项   ");
    				scanf("%d",&i); 
    				if(Get(T,i,result) == ERROR) printf("输入值错误"); 
    				else {
    					printf("这个值为 ");
    					if(sizeof(result)==4) printf("%d
    ",result);
    				} 
    				break;
    			
    			case 2 :
    				
    				printf("请输入要改变的第i项以及改变后的值   ");
    				scanf("%d %d",&i,&result); 
    				if(Put(T,i,result) == ERROR) printf("输入值错误
    "); 
    				else {
    					printf("修改成功!
    ");
    				} 
    				break;
    				
    			case 3 :
    				if(IsAscending(T)==TRUE) printf("是升序排列
    ");
    				else printf("不是升序排列
    ");
    				break;
    			
    			case 4 :
    				if(IsDesending(T)==TRUE) printf("是降序排列
    ");
    				else printf("不是降序排列
    ");
    				break; 
    				
    			case 5 :
    				
    				if(Max(T,result)==OK) 
    					printf("最大值是:");
    					if(sizeof(result)==4) printf("%d
    ",result);
    				break; 
    			
    			case 6 :
    				
    				if(Min(T,result)==OK) 
    					printf("最小值是:");
    					if(sizeof(result)==4) printf("%d
    ",result);
    			
    			default : break;
    		}	
    	}
    } 
    
  • 相关阅读:
    shell脚本程序练习
    02、重定向和管道符
    01、bash的基本特性
    python--03day
    python--02day
    python--01day
    Django之Form
    Django之ajax
    csrf的中间件
    Django之中间件
  • 原文地址:https://www.cnblogs.com/SiriusZHT/p/14310789.html
Copyright © 2020-2023  润新知